您的位置:首页 > 理论基础 > 计算机网络

HttpClient 4 文件下载

2011-08-11 09:50 387 查看
自动化测试做了好久了,再不加工资就走人了.

其实我原来不知道什么HttpClient的版本. 刚查了下.m2目录,原来在org.apache.httpcomponents下了.看了下版本,是4.1-alpha1.

其实我这自动化和开发无异啊,也都是代码啊,主要是Java,主要是JUnit.其实比开发还难啊,web组的,平台组的,客户端组的东东都得会用啊.基本上谁写的功能我就得找人家问一通啊.沟通很重要啊.虽说同事之间无隔阂啊,但人家也等于是在帮你啊,而不是义务啊.别人也有忙的时候,也会有忘的时候,也会有时候让你工作拖延啊.所以说这工作不好做啊,经常得看别人有没有时间啊.

废话不多说了,下面是代码:

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.http.HttpEntity;
import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

public class SearchDomain {

public static void main(String[] args) throws ClientProtocolException, IOException {
//实例化一个HttpClient
HttpClient httpClient = new DefaultHttpClient();
//设定目标站点 web的默认端口80可以不写的 当然如果是其它端口就要标明
HttpHost httpHost = new HttpHost("www.shanhe114.com",80);
//设置需要下载的文件
HttpGet httpGet = new HttpGet("/test.zip");
//这里也可以直接使用httpGet的绝对地址,当然如果不是具体地址不要忘记/结尾
//HttpGet httpGet = new HttpGet("http://www.0431.la/");
//HttpResponse response = httpClient.execute(httpGet);

HttpResponse response = httpClient.execute(httpHost, httpGet);
if(HttpStatus.SC_OK==response.getStatusLine().getStatusCode()){
//请求成功
//取得请求内容
HttpEntity entity = response.getEntity();

//显示内容
if (entity != null) {
//这里可以得到文件的类型 如image/jpg /zip /tiff 等等 但是发现并不是十分有效,有时明明后缀是.rar但是取到的是null,这点特别说明
System.out.println(entity.getContentType());
//可以判断是否是文件数据流
System.out.println(entity.isStreaming());
//设置本地保存的文件
File storeFile = new File("c:/0431la.zip");
FileOutputStream output = new FileOutputStream(storeFile);
//得到网络资源并写入文件
InputStream input = entity.getContent();
byte b[] = new byte[1024];
int j = 0;
while( (j = input.read(b))!=-1){
output.write(b,0,j);
}
output.flush();
output.close();
}
if (entity != null) {
entity.consumeContent();
}
}
}
}

其实代码很简单啊,之前有个测下载的功能,人家说得到Response就下载了,我以为会自动下载到某个地方,搞个半天还是得自己保存文件啊.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: