HttpClient简介
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit都使用了 HttpClient。HttpClient 项目非常活跃,使用的人还是非常多的。我们目前用的版本是commons-httpclient-3.1-rc1.jar。
HttpClient 基本功能的使用
1. HttpClient httpclient=new HttpClient();//创建一个客户端,类似打开一个浏览器
2. GetMethod getMethod=new GetMethod("http://www.blablabla.com");//创建一个get方法,类似在浏览器地址栏中输入一个地址
3. int statusCode=httpclient.executeMethod(getMethod);//回车!
4. System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳头命中情况,可以获得的东西还有很多,比如head, cookies等等
5. getMethod.releaseConnection();//释放,记得收拳哦
参考:http://secyaher.blog.163.com/blog/static/389557720115303157876/
Http站点认证
HTTP Base认证:用于服务器端在接收客户端访问受保护资源,要求客户端提供用户名密码时。
参考:http://www.360doc.com/content/11/0331/13/2807_106121494.shtml
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP 协议的客户端编程工具包,并且它支持HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit都使用了 HttpClient。HttpClient 项目非常活跃,使用的人还是非常多的。我们目前用的版本是commons-httpclient-3.1-rc1.jar。
HttpClient 基本功能的使用
1. HttpClient httpclient=new HttpClient();//创建一个客户端,类似打开一个浏览器
2. GetMethod getMethod=new GetMethod("http://www.blablabla.com");//创建一个get方法,类似在浏览器地址栏中输入一个地址
3. int statusCode=httpclient.executeMethod(getMethod);//回车!
4. System.out.println("response=" + getMethod.getResponseBodyAsString());//察看拳头命中情况,可以获得的东西还有很多,比如head, cookies等等
5. getMethod.releaseConnection();//释放,记得收拳哦
参考:http://secyaher.blog.163.com/blog/static/389557720115303157876/
Http站点认证
HTTP Base认证:用于服务器端在接收客户端访问受保护资源,要求客户端提供用户名密码时。
参考:http://www.360doc.com/content/11/0331/13/2807_106121494.shtml
确定用户名密码参数的对象
public class Http {
private static final String ADMIN = "admin";
private static HttpClient httpClient = null;
public static void main(String[] args) {
httpClient = new HttpClient();
/*设置站点认证用户名、密码 */
httpClient.getState().setCredentials(new AuthScope(httpClient.getHost(), httpClient.getPort(), AuthScope.ANY_REALM),
new UsernamePasswordCredentials(ADMIN, ADMIN));
// 创建GET方法的实例
GetMethod getMethod = new GetMethod("http://10.1.10.185/log/rtsp.log?name=admin&passwor=admin");
// 使用系统提供的默认的恢复策略
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler());
try {
// 执行getMethod
int statusCode = httpClient.executeMethod(getMethod);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: "
+ getMethod.getStatusLine());
}
// 读取内容
byte[] responseBody = getMethod.getResponseBody();
// 处理内容
System.out.println(new String(responseBody));
} catch (HttpException e) {
// 发生致命的异常,可能是协议不对或者返回的内容有问题
System.out.println("Please check your provided http address!");
e.printStackTrace();
} catch (IOException e) {
// 发生网络异常
e.printStackTrace();
} finally {
// 释放连接
getMethod.releaseConnection();
}
}
}
总结:
HTTP访问受保护资源用到站点认证,base64编码,同时单元测试的时候发现POST提交方式是无法下载的。