HttpClient的使用
来源:互联网 发布:夏老师c语言百度云资源 编辑:程序博客网 时间:2024/06/12 21:01
首先,简单介绍下HttpClient,HttpClient是Apache Jakarta Common下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。大家都知道JDK的java net包中已经提供了访问HTTP协议的基本功能,但是对于大部分应用程序来说,JDK库本身提供的功能还不够丰富和灵活。
一、HTTPClient基本功能。(代码以httpclient3.1版本为例,其他版本请查询官方相关文档)
(1)GET方法
使用HttpClient需要以下6个步骤:
1、创建HttpClient的实例
HttpClient client = new HttpClient();
2、创建某种连接方法的实例,在这里是GetMethod。在GetMethod的构造函数中传入待连接的地址
String str = “http://twitter.com/statuses/friends/xxx.json?cursor=-1”;
GetMethod method = new GetMethod(str);
3、调用第一步中创建好的实例的execute方法来执行第二步中创建好的method实例
client.excuterMethod(get);
4、读response
String responseString = method.getResponseBodyAsString();
5、释放连接。无论执行方法是否成功,都必须释放连接
method.releaseConnection();
6、对得到后的内容进行处理
System.out.println(responseString);
(2)Post方法
1、创建HttpClient的实例
HttpClient client = new HttpClient();
2、创建某种连接方法的实例,在这里是PostMethod。在PostMethod的构造函数中传入待连接的地址
String url =” ”;
PostMethod postMethod = new PostMethod(url);
3、填入各个表单域的值
NameValuePair[] data ={new NameValuePair(“id”,”yourUserName”),
new NmaeValuePair(“passwor”,”yourPwd”)};
4、将表单的值放入postMethod中
pstMEthod.setRequestBody(data);
5、执行postMethod
int statusCode =client.executeMethod(postMethod);
6、HttpClient对于要求接受后继服务的请求,象POST和PUT等不能自动处理转发
301或者302
if (statusCode == HttpStatus SC_MOVED_PERMANENTLY ||
statusCode == HttpStatus SC_MOVED_TEMPORARILY) {
7、从头中取出转向的地址
Header locationHeader = postMethod.getResponseHeader("location");
String location = null;
if (locationHeader != null) {
location = locationHeader.getValue();
System.out.println("The page was redirected to:" + location);
} else {
System.err.println("Location field value is null.");
}
return;
}
二、HttpClietn中使用代理服务器
HttpClient中使用代理服务器非常简单,调用HttpClient中setProxy方法就可以,方法的第一个参数是代理服务器地址,第二个参数是端口号。另外HttpClient也支持SOCKS代理。
client.getHostConfiguration().setProxy(hostName,port);
如:client.getHostConfiguration().setProxy("127.0.0.1", 443);
三、HttpClient处理认证
HttpClient三种不同的认证方案: Basic, Digest and NTLM. 这些方案可用于服务器或代理对客户端的认证,简称服务器认证或代理认证。
下面只讲讲服务器认证中的抢先认证:通过下述方法打开
client.getState().setAuthenticationPreemptive(true);
目前用这种:client.getParams().setAuthenticationPreemptive(true);
注:new DefaultHttpClient()方法属于org.apache.http.impl.client.DefaultHttpClient;包而 new HttpClient();属于org.apachorg.apache.commons.httpclient.HttpClient;包
- HttpClient的使用
- HttpClient的简单使用
- HttpClient基本功能的使用
- HttpClient的基本使用
- httpclient的使用
- HttpClient 基本功能的使用
- HttpClient的使用
- HttpClient 的使用
- HttpClient的使用
- HttpClient的快速使用
- HttpClient的简单使用
- android HttpClient 的使用
- android HttpClient 的使用
- HttpClient的使用
- HttpClient的使用
- HttpClient的使用
- HttpClient的使用
- HttpClient的使用步骤
- Mybatis中selectOne方法存在的坑 空指针异常
- 添加BSP到PB5
- T001-UT001-0009
- 在Eclipse中使用JUnit4进行单元测试(中级篇)
- PHP 为什么要使用命名空间,命名空间的作用是什么,如何更好的使用命名空间【详解】
- HttpClient的使用
- window做网关搭建局域网的若干问题
- ssh框架搭建出现java.lang.NoClassDefFoundError: org/apache/commons/collections/map/LRUMap问题
- ios git 的一些指令
- 精致简约生活 墨尔本的现代公寓
- pymal binary pentest tools intro
- linux中tomcat内存溢出解决办法
- github搭建博客详解
- T001-UT001-0010