httpclient4的应用

标签: httpclient4 应用 | 发表时间:2014-01-26 16:36 | 作者:aigo_h
出处:http://www.iteye.com
httpclient一个实现了HTTP协议的客户端编程工具包
一个使用的背景:登录需要验证,需要压力测试一下,用webdriver等工具搞不定
就用到了他,有ocr开源的工具,结合httpclient完美的处理了

网上的例子主要是3的版本,这里主要是总结一下4的版本

首先放几个例子这儿参考:
http://www.cnblogs.com/loveyakamoz/archive/2011/07/21/2113252.html
http://blog.csdn.net/java2000_net/article/details/3720571

本身带的例子也不错:下载地址,api的参考
http://hc.apache.org/downloads.cgi

放一个例子这儿,自己参考:


DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet getMethod = new HttpGet(
"http://10.101.2.13:28080/ECLink//rand.action");
HttpPost httpost = new HttpPost(
"http://10.101.2.13:28080/ECLink/user_validLogin.action");

try {
String yzm = "";
HttpResponse response = httpclient.execute(getMethod);
Header headers[] = response.getAllHeaders();
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
StringBuilder cookieValue = new StringBuilder();
if (cookies.isEmpty()) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.size(); i++) {
cookieValue.append(cookies.get(i).toString());
}
}
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
saveFile(instream, "2.bmp");
InputStream instream2 = new FileInputStream("2.bmp");
BufferedImage bi = ImageIO.read(instream2);
yzm = ImageRead.read(bi, 1);
System.out.println(yzm + "-----------------------------");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("userName", "admin"));
nvps.add(new BasicNameValuePair("password", "888888"));
nvps.add(new BasicNameValuePair("validCode", yzm));
httpost.setEntity(new UrlEncodedFormEntity(nvps));
response = httpclient.execute(httpost);
HttpEntity entity1 = response.getEntity();
if (entity1 != null) {
// System.out.println("Response content: " +
// inputStream2String(entity1.getContent()));
saveFile(entity1.getContent(), "3.html");
instream.close();
}




for (int i = 1; i <= 1; i++) {
List<NameValuePair> list1 = new ArrayList<NameValuePair>();
HttpPost httpost1 = new HttpPost("http://10.101.2.13:28080/ECLink/computerCheck_computerCheck.action");
list1.add(new BasicNameValuePair("sgid", sgid.trim()));

httpost1.getParams().setParameter("http.protocol.content-charset",HTTP.UTF_8); 
httpost1.getParams().setParameter(HTTP.CONTENT_ENCODING, HTTP.UTF_8); 
httpost1.getParams().setParameter(HTTP.CHARSET_PARAM, HTTP.UTF_8); 
httpost1.getParams().setParameter(HTTP.DEFAULT_PROTOCOL_CHARSET, HTTP.UTF_8); 
httpost1.setEntity(new UrlEncodedFormEntity(list1,HTTP.UTF_8));


response = httpclient.execute(httpost1);

HttpEntity entity2 = response.getEntity();
if (entity2 != null) {
// System.out.println("Response content: " +
// inputStream2String(entity1.getContent()));
saveFile(entity2.getContent(), "408.html");
instream.close();
}
httpost1.abort();
}
}

} catch (Exception e) {
e.printStackTrace();
} finally {
httpost.abort();
getMethod.abort();
}


对于大的表单,感觉也不是很方便,还是没有直接用自动测试工具方便



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [httpclient4 应用] 推荐:

httpclient4的应用

- - 编程语言 - ITeye博客
httpclient一个实现了HTTP协议的客户端编程工具包. 一个使用的背景:登录需要验证,需要压力测试一下,用webdriver等工具搞不定. 就用到了他,有ocr开源的工具,结合httpclient完美的处理了. 网上的例子主要是3的版本,这里主要是总结一下4的版本. 本身带的例子也不错:下载地址,api的参考.

GetEd2k (Android应用)

- 某牢 - eMule Fans 电骡爱好者
GetEd2k是一个Android应用程序,作者是anacletus. 此应用可以帮助你把网页中的电驴(eDonkey) 链接添加到你个人电脑的电驴客户端里,不过前提是你的客户端开启了用于远程控制的Web interface(Web服务器,网页接口,Web界面),当然,eMule(电骡), MLDonkey 和 aMule 都支持该功能,所以这三种主流电驴客户端的用户都可以使用GetEd2k.

fixed应用

- - ITeye博客
今天在逛人人网时,发现人人网首页左侧的“应用动态”,随着我页面向下滚动,一直固定在网站的左侧. 但这效果存在一点瑕疵,在拖动过程中存在一点抖动(ie下),不是非常平滑. 我尝试使用jquey实现了该效果,也解决了抖动的问题. 创建一个ID为sideBar的div,将它的position设置为absolute.

Voldemort应用

- - 冰火岛
    互联网数据应用产品涉及到到大数据存储,譬如推荐系统,精准营销,个性化搜索这样的产品,后台离线计算的海量数据需要展示给用户. 在电子商务应用中,譬如将User作为key,给用户挖掘的结果作为value;或者以商品id作为key,商品挖掘的知识作为value,这些数据可以通过KV存储,从而满足实际需求.

Solr SpellCheck 应用

- - 开源软件 - ITeye博客
通过对各类型的SpellCheck组件学习,完成项目拼写检查功能. 本文使用基于拼写词典的实现方式,solr版本为5.3.0. SpellCheck 简述. 拼写检查是对用户错误输入,响应正确的检查建议. 比如输入:周杰轮,响应:你是不是想找 周杰伦. Solr的拼写检查大致可分为两类,基于词典与基于Solr索引.

当应用不仅仅是应用

- HACK21 - 爱范儿 · Beats of Bits
(Ankit Gupta 和 Akshay Kothari 是 Pulse 的创始人,他们的应用在 iOS/Android 平台获得极高的下载量,曾获得乔布斯的赞赏. 他们的公司 Alphonso Labs 获得了 100 万风投和天使投资). by  ankit gupta from posterous blog |  积木 译,转载请注明 ifanr 译文链接.

JMS - JMS​应​用​领​域 应用场景

- - 企业架构 - ITeye博客
Java的JMS消息类型有文本类型,对象类型,字节类型,流类型,XML类型,实际项目中,用的最多的是文本类型,对象类型和xml类型的消息.建议最好不用对象类型,因为如果用对象类型的话,调试的时候是很麻烦的,. 首先你必须要写专门的测试代码用来发送消息,. 第二,必须要管理对象所属的类的不同版本,. 第三,不方便查看queue或者topic中的消息内容..

Java应用运维

- - BlueDavy之技术blog
对于互联网产品或长期运行的产品而言,运维工作非常重要,尤其是在产品复杂了以后,在这篇blog中就来说下Java应用的运维工作(ps:虽然看起来各种语言做的系统的运维工作都差不多,但细节上还是会有很多不同,so本文还是只讲Java的). 苦逼的码农按照需求开发好了一个全新的Java Web应用,该发布上线给用户用了,要把一个Java Web应用发布上线,首先需要搭建运行的环境,运行的环境需要有JDK、APPServer,在已经装好了os的机器上装上JDK和APPServer,开发好的Java Web应用可以用maven直接打成war或ear,将这个打好的包scp或其他方式到目标机器上,准备妥当,就差启动了.

Redis应用场景

- - CSDN博客架构设计推荐文章
Redis最为常用的数据类型主要有以下:. 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:.          首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:.

Android 应用程序

- - CSDN博客推荐文章
Android 应用程序由四个模块构造而成:Activity、Intent 、Content Provider 、Service. 下面简单介绍一下如下模块的含义:. 1、Activity  "活动". 一个Activity就是单独的屏幕,每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口并对事件作出响应.