使用HttpClient模拟浏览器

0

最近研究一下某个软件的接口,不得不使用一下模拟浏览器去对接,于是今天我就研究了一下。

如何模拟浏览器?

一般的HTTP请求还简单,关键是要模拟登录需要记住session等信息比较麻烦了。
幸好apache提供了一个工具包,其实很多人也用过这个,就是HttpClient

区分以下commons-httpclient,这是旧版依赖,官方推荐HttpClient

例子:

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://xxxx");
post.addHeader("xxxx", "xxxx"); // 添加一些请求头部
// 参数
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("xxxx", "xxxx"));
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse response = client.execute(post); // 执行请求
// 读取返回内容
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
String line = null;
while ((line = reader.readLine()) != null) {
	System.out.println(line);
}
// 这个时候cookie其实已经存在我们的HttpClient里面了

注意:post.addHeader("Accept-Encoding", "gzip, deflate, sdch");如果添加gzip可能需要自己实现解压