HttpClient相关
来源:互联网 发布:java 驻场开发 编辑:程序博客网 时间:2024/05/17 20:14
工具介绍:
可以使用httpLook来抓包,不管是浏览器发出的还是httpClient发出的都可以抓到。但貌似对https无效。IE浏览器还可以使用httpWatch。
分类经验:
1、 如果码流中抓出了Expect:100-Continue,是因为httpClient默认开了这个握手,可以关掉,方式如下:
HttpPost loginPost = new HttpPost(targetURL);
loginPost.getParams().setBooleanParameter(
CoreProtocolPNames.USE_EXPECT_CONTINUE,false);
2、 打印response中的码流可以参考如下代码(网友贡献):
InputStream is =entity.getContent();
BufferedReader in = new BufferedReader(newInputStreamReader(is));
List<Byte> li = newArrayList<Byte>();
int i;
while ((i = is.read()) != -1)
{
li.add((byte) i);
}
byte a[] =newbyte[li.size()];
for (i = 0; i < a.length; i++)
{
a[i] = (byte) li.get(i);
}
String finalStr = new String(a,"UTF-8");
使用的编码格式可以参考返回报文头中的Content-Type: text/html; charset=utf-8。
但有时候发消息过去时如果头部设置了Accept-Encoding:gzip, deflate,即使解码格式设置正确,也打印出乱码来,那是因为,浏览器对于从服务器中返回的对应的gzip压缩的网页,会自动解压缩,所以在request中添加对应的头,表明自己接受压缩后的数据,httpClient也可以用GzipDecompressingEntity来进行解压再打印。
3、 httpClient自动支持session:
HttpClientParams.setCookiePolicy(client.getParams(),
CookiePolicy.BROWSER_COMPATIBILITY);
收到的类似Set-Cookie:_session_id=a17665f6fb4887c8f37607ebeed01f8e; path=/; HttpOnly会自动进行request时的session设置,也就是session可以维持了。比如下次发出去就是:Cookie:_session_id=a17665f6fb4887c8f37607ebeed01f8e。只要client对象不灭掉这个session就一直有效。
4、 额外的会话维持条件
这点其实跟httpClient没啥太大的关系。有些网站的业务逻辑控制不能仅用一个cookie里的session标志来维持会话,还会设置额外的条件,如果达不到,即使登录成功并且cookie支持,也会使会话失效(可能是防CSRF攻击用,参考http://www.cnblogs.com/hyddd/archive/2009/04/09/1432744.html)。像这样的网站,我们除了猜没啥办法。
比如说抓码流的时候,发现post内容中有个authValue=9u20o4nnfg02gnosdng2h0ghsg0in,猜想这个玩意可能跟会话维持有关,遂寻找所有抓到的码流内容,终于在一个页面中找到了类似这样:<input name="authValue" type="hidden"value="9u20o4nnfg02gnosdng2h0ghsg0in " />,那么可以想象是这么个流程:登录后-》网站通过用户名和密码和sessionID生成字符串-》发回给登录后的某个页面-》后面所有流程中通过input自动带往后台-》用户名、密码、sessionID再匹配。那么现在我们就要在登录后把那个页面码流抓下来,在以后的流程中自动设置authValue值即可。
- HttpClient相关
- httpclient相关资料
- HttpClient相关资料
- HttpClient的相关例子
- HttpClient的相关知识
- httpclient相关文档
- commons-HttpClient相关笔记
- Http相关--HttpClient
- httpClient相关知识点--使用方法
- HttpClient和HttpURLConnection相关
- HttpClient 超时相关参数设置
- 页面抓取相关之HttpClient
- 【收藏网页】Java HttpClient 相关的博客
- Android Studio使用HttpClient相关类库
- HttpClient对象相关方法的操作
- Android Studio 找不到Apache HttpClient相关类
- HttpClient
- HttpClient
- 喷泉装置(贪心问题)
- poj 2503(字典树)
- 最大K个数
- Android中Dialog的使用
- Redis在windows下的安装使用
- HttpClient相关
- 在任意程序上使用PerfHUD
- Struts2、Hibernate、Spring整合的泛型DAO Version 2010.9.27
- CCS教材
- NSPredicate的用法
- android中如何通过代码来开启和关闭移动网络
- arp-scan
- 利用函数来画任意图形
- 数据库分区分表以及读写分离