使用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
可能需要自己实现解压