HttpClient
Cookies
简介
HttpClient
支持自动管理
Cookies
,允许服务端设定
Cookies
,并在请求时自动返回客户端的
Cookies
信息。客户端也可以手动的设置
Cookies
发送到服务端。
不幸的是,同一时间内有太多的
Cookies
标准:
Netscape Cookie
, RFC2109, RFC2965
以及
大量供应商不符合规范的自定义
Cookies
标准。针对此,
HttpClient
提供
Cookies
管理策略驱动。这片文章意在阐述怎么样去使用不同标准的
Cookies
以及如何解决在使用
Cookies
和
HttpClient
时一些共同的问题。
支持的规格
以下
Cookies
标准,
HttpClient3.1
可以支持。
RFC2109
RFC2109
是
W3C
组织第一次推出的官方
Cookies
标准。理论上,所有使用版本
1Cookies
的服务端都应该使用此标准。
HttpClient
已经将此标准设定为默认。
遗憾的是,许多服务端不正确的实现了标准或者仍然使用
Netscape
标准。所有有时感到此标准太多于严格。
RFC2109
是
HttpClient
使用的默认
Cookies
协议。
RFC2965
RFC2965
定义了版本
2
并且尝试去弥补在版本
1
中
Cookie
的
RFC2109
标准的缺点。
RFC2965
是,并规定
RFC2965
最终取代
RFC2109.
发送
RFC2965
标准
Cookies
的服务端,将会使用
Set-Cookie2
header
添加到
Set-Cookie
Header
信心中,
RFC2965 Cookies
是区分端口的。
Netscape
标准
Netscape
是最原始的
Cookies
规范,同时也是
RFC2109
的基础。尽管如此,还是在很多重要的方
面与
RFC2109
不同,可能需要特定服务器才可以兼容。
Browser Compatibility
这种兼容性设计要求是适应尽可能多的不同的服务器,尽管不是完全按
照标准来实现的。如果你遇到了解析
Cookies
的问题,你就可能要用到这一个规范。
有太多的
web
站
点是用
CGI
脚本去实现的,而导致只有将所有的
Cookies
都放入
Request header
才可以正常的工作。这种情况下最好设
置
http.protocol.single-cookie
-header
参数为
true
。
Ignore Cookies
此规格忽略
所有
Cookie
。被用来防止
HttpClient
接受和发送的
Cookie
。
Spacifying the Specification
有俩中方式
去规定使用哪种
Cookies
规范,每个
HttpMethod
实例都有
HttpMethodParams
,他的
policy
值必须使用方法
CookiePolicy.registerCookieSpec()
来注册。
HttpMethod method = new GetMethod();
Method.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
手动处理
Cookies
HttpClient
的
Cookie
管理
API
可以手动处理
Cookie
。可以手动设置
Requset
的
Cookie
headers
或是处理
Response
的
Set-Cookie
的
headers
或是用自动
Cookie
管理去代替。
HttpMethod
method = new GetMethod();
Method.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
Method.setRequestHeader(“Cookie
”, “special_cookie=value”);
分享到:
相关推荐
1. **HttpClient的基本使用**:介绍HttpClient类的基本概念,包括如何创建实例,设置请求头,以及发送GET和POST请求。 2. **封装的设计**:讨论如何设计一个网络请求的通用接口或类,比如定义方法如`SendGetAsync`...
httpclient 请求两种方式,如果有cookie可加上cookies,同步获取返回值
HttpClient支持多种HTTP方法,如GET、POST、PUT、DELETE等,可以方便地进行HTTP头的设置,发送cookies,处理重定向,甚至实现HTTP/1.1和HTTP/2之间的平滑切换。此外,HttpClient还提供了对HTTPS的支持,确保数据传输...
- HttpClient内置了CookieSpec和CookieStore,用于处理服务器返回的cookies和发送cookies到服务器。 8. **异步请求**: - HttpClient也支持异步请求,使用FutureCallback接口可以注册回调函数处理请求完成后的...
此外,HttpClient 4.1.2还提供了对cookies的处理,通过`CookieStore`和`CookieSpec`接口,可以实现cookies的存储、读取和管理,从而保持会话状态。 在错误处理上,HttpClient 4.1.2引入了重试策略,当网络不稳定...
完全兼容jdk1.7,1.8,完整包含所有依赖包...* [HTTPCLIENT-1788] RFC 6265 policy must not reject cookies with paths that are no prefix of the uri path. Contributed by Oleg Kalnichevski <olegk at apache.org>
2. **examples** 目录:这个目录提供了使用HttpClient的示例代码,涵盖了各种常见的HTTP操作,如GET、POST、PUT、DELETE等方法,以及处理重定向、认证、cookies、多线程等场景。通过这些示例,开发者可以快速理解...
这些示例可能包括发起GET和POST请求,设置请求头,处理cookies,管理连接池,以及处理重定向和错误响应。这些例子对于初学者来说是极好的学习资源,可以帮助他们快速理解和掌握HttpClient的用法。 HttpClient的架包...
这个库被广泛用于开发需要与Web服务器交互的应用程序,比如发送HTTP请求、接收响应、处理Cookies、管理会话等。以下是对HttpClient3.1及其相关组件的详细解释: 1. **HttpClient**:HttpClient是Apache软件基金会的...
5. **Cookie管理**:HttpClient可以自动处理服务器返回的cookies,保持会话状态,方便处理登录和其他需要保持状态的场景。 6. **异步请求**:虽然HttpClient主要是同步操作,但通过配合线程或者回调机制,可以实现...
在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...
HttpClient提供了`CookieStore`接口,可以用来存储和管理cookies。 总之,HttpClient提供了一套强大的API,使Java开发者能够轻松地模拟浏览器进行HTTP通信,包括模拟登录操作。通过理解其核心概念和方法,我们可以...
Apache HttpClient库是Apache软件基金会的一个项目,它提供了对HTTP协议的全面支持,包括GET、POST、PUT等HTTP方法,以及处理cookies、重定向、身份验证等功能。 描述中提到的三个JAR文件分别是: 1. **commons-...
9. **Cookie管理**:HttpClient有一个CookieStore接口,用于存储和管理cookies。这在需要保持会话状态或处理服务器的Set-Cookie响应头时很有用。 10. **错误处理**:在处理响应时,需要检查状态码以确定请求是否...
4. `commons-codec-1.4.jar`:提供了各种编码算法,如Base64和Hex,HttpClient可能用它来编码URL、处理cookies或其他需要编码的数据。 在使用HttpClient时,开发者需要注意一些最佳实践,例如正确关闭连接,处理...
本文将详细讲解如何使用HTTPClient来保持session会话,从而实现模拟登录后的其他操作。 首先,理解session的概念至关重要。Session是服务器端用来跟踪用户状态的一种机制。在Web应用中,当用户登录后,服务器会为该...
4. **管理Cookies**:维持会话状态,实现登录保持功能。 5. **使用代理**:在需要经过代理服务器访问互联网的环境中工作。 6. **进行认证**:对受保护的Web资源进行身份验证。 总的来说,Apache Commons HttpClient...