HTTP 协议实例
来源:互联网 发布:sigma.js 示例 编辑:程序博客网 时间:2024/05/16 01:38
虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。
HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
HttpClient 功能介绍
以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。
实现了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)
支持自动转向
支持 HTTPS 协议
支持代理服务器等
任何用户 身份验证过程需要一套可以来确定的凭据。在最简单形式任何用户 身份验证过程需要一套可以来确定的凭据。
在最简单形式crednetials可以只是一 个用户名 /密码对。 UsernamePasswordCredentials代表了一个安全主体组成的凭据和明文密码。
Authentication schemes (认证 模式)
注意验证 模式 可能涉及的状态 应答式 交换。 HttpClient 有几个 AuthScheme实现:
l Basic:基本身份验证 模式 在 RFC 2617中定义。这种身份验证 中定义。这种身份验证模式是不安全的,因为凭据以明文形式传 输。
尽管 它不安全 ,如果 与 TLS / SSL加密技术结合使用 ,基本验证模式是 十分满足需求的 。
2 Digest:摘要式身份验证 模式 在 2617 中定义。摘要式身份验证方案是大大超过基本安全, 对于 那 些不想应用程序通过 TLS / SSL加密安全传输 ,
Basic是一个 不错的选择。
3 NTLM:NTLM是微软 Windows平台开发和优化 专有的认证模式 。 NTLM被认为 比摘要 更安全。这个模式 是需要一个外部 NTLM身份引擎能够发挥作用。
http请求发出:
UsernamePasswordCredentials cred = new UsernamePasswordCredentials(userName, password);
public HttpResponse doExcute(HttpEntityEnclosingRequestBase httpRequest ) throws ConnectionMainException {
HttpResponse response = null;
try {
response = httpClient.execute(httpRequest);
if (response.getStatusLine().getStatusCode() == StatusCode.SC_UNAUTHORIZED
.getScCode()) {
Header wwwheader = response
.getLastHeader("WWW-Authenticate");//用户身份认证
if (wwwheader != null) {
Header authResponse = null;
if (wwwheader.getValue().contains("Digest")) {
DigestScheme digestScheme = new DigestScheme();
digestScheme.processChallenge(wwwheader);
authResponse = digestScheme.authenticate(cred,
httpRequest);
httpRequest.addHeader(authResponse);
} else if (wwwheader.getValue().contains("Basic")) {
BasicScheme basicScheme = new BasicScheme();
authResponse = basicScheme.authenticate(cred,
httpRequest);
httpRequest.addHeader(authResponse);
}
}
response = httpClient.execute(httpRequest);
}
} catch ( e) {
throw
}
return response;
}
- HTTP协议实例分析
- http协议使用实例
- HTTP 协议实例
- HTTP协议 之 实例分析
- http协议C语言编程实例
- TSUNG测试HTTP协议详解和实例
- 图解http协议头实例分析
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- [ZT]HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例[摘抄]
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- HTTP协议的C语言编程实现实例
- gossip_0304
- java 泛型笔记
- 自动化1122徐达武第四周剩下的作业
- 学习<opencv> CascadeClassifier::detectMultiScale 各个参数作用
- javascript替换所有反斜杠”\“的写法
- HTTP 协议实例
- 前端笔试题阿里篇 之一-- css,js打造rating打分效果
- 软考笔记(一)
- 解决Matlab中load一个mat文件时出现The element type "name" must be terminated by the matching end-tag "</name>"的
- HDU 4442 Physical Examination
- mysql 数据库 错误 Data truncation: Data too long for column 'name' at row 1
- 一步步学习微软InfoPath2010和SP2010--第十三章节--SharePoint视图和仪表板(12)--关键点
- Android 服务(service)的生命周期以及利用bindservice调用服务里面的方法
- 《Boost标准库完全开发指南》第三章-内存管理