HttpClient 4 实现文件下载

http://llying.iteye.com/blog/486989

如果大家对WEB研发有兴趣 
可以加入Q群:46176507 共同进步学习 
有时需要通过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("www.shanhe114.com",80);  
  22.         //设置需要下载的文件  
  23.         HttpGet httpGet = new HttpGet("/test.zip");  
  24.         //这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾  
  25.         //HttpGet httpGet = new HttpGet("http://www.0431.la/");  
  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的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值