当前位置:文档之家› HttpClient 4 实现文件下载

HttpClient 4 实现文件下载

有时需要通过httpclient进行文件下载,下面是文件下载的实现过程
Java代码
1.import java.io.File;
2.import java.io.FileOutputStream;
3.import java.io.IOException;
4.import java.io.InputStream;
5.
6.import org.apache.http.HttpEntity;
7.import org.apache.http.HttpHost;
8.import org.apache.http.HttpResponse;
9.import org.apache.http.HttpStatus;
10.import org.apache.http.client.ClientProtocolException;
11.import org.apache.http.client.HttpClient;
12.import org.apache.http.client.methods.HttpGet;
13.import org.apache.http.impl.client.DefaultHttpClient;
14.
15.public class SearchDomain {
16.
17.public static void main(String[] args) throws ClientProtocolException,
IOException {
18.//实例化一个HttpClient
19.HttpClient httpClient = new DefaultHttpClient();
20.//设定目标站点web的默认端口80可以不写的当然如果是其它端口就要标明
21.HttpHost httpHost = new HttpHost("",80);
22.//设置需要下载的文件
23.HttpGet httpGet = new HttpGet("/test.zip");
24.//这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾
25.//HttpGet httpGet = new HttpGet("/");
26.//HttpResponse response = httpClient.execute(httpGet);
27.
28.HttpResponse response = httpClient.execute(httpHost, httpGet);
29.if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
30.//请求成功
31.//取得请求内容
32.HttpEntity entity = response.getEntity();
33.
34.//显示内容
35.if (entity != null) {
36.//这里可以得到文件的类型如image/jpg /zip /tiff 等等但是发现并不是十分有效,
有时明明后缀是.rar但是取到的是null,这点特别说明
37.System.out.println(entity.getContentType());
38.//可以判断是否是文件数据流
39.System.out.println(entity.isStreaming());
40.//设置本地保存的文件
41.File storeFile = new File("c:/0431la.zip");
42.FileOutputStream output = new FileOutputStream(storeFile);
43.//得到网络资源并写入文件
44.InputStream input = entity.getContent();
45.byte b[] = new byte[1024];
46.int j = 0;
47.while( (j = input.read(b))!=-1){
48.output.write(b,0,j);
49.}
50.output.flush();
51.output.close();
52.}
53.if (entity != null) {
54.entity.consumeContent();
55.}
56.}
57.}
58.}
需要说明这里我并没验证文件的类型,实际操作中可以通过url的后缀提取或者ContentType的类型。

相关主题