`
gstarwd
  • 浏览: 1524679 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

HttpClient Cookies

阅读更多

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”);

分享到:
评论

相关推荐

    对于C#(HttpClient)方式网络请求的封装

    1. **HttpClient的基本使用**:介绍HttpClient类的基本概念,包括如何创建实例,设置请求头,以及发送GET和POST请求。 2. **封装的设计**:讨论如何设计一个网络请求的通用接口或类,比如定义方法如`SendGetAsync`...

    httpclient请求方式+cookies

    httpclient 请求两种方式,如果有cookie可加上cookies,同步获取返回值

    httpclient

    HttpClient支持多种HTTP方法,如GET、POST、PUT、DELETE等,可以方便地进行HTTP头的设置,发送cookies,处理重定向,甚至实现HTTP/1.1和HTTP/2之间的平滑切换。此外,HttpClient还提供了对HTTPS的支持,确保数据传输...

    apache httpclient jar包

    - HttpClient内置了CookieSpec和CookieStore,用于处理服务器返回的cookies和发送cookies到服务器。 8. **异步请求**: - HttpClient也支持异步请求,使用FutureCallback接口可以注册回调函数处理请求完成后的...

    httpclient4.1.2.zip

    此外,HttpClient 4.1.2还提供了对cookies的处理,通过`CookieStore`和`CookieSpec`接口,可以实现cookies的存储、读取和管理,从而保持会话状态。 在错误处理上,HttpClient 4.1.2引入了重试策略,当网络不稳定...

    httpclient4.5.3 jar完整包含所有依赖包

    完全兼容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>

    HttpClient-4.3.6

    2. **examples** 目录:这个目录提供了使用HttpClient的示例代码,涵盖了各种常见的HTTP操作,如GET、POST、PUT、DELETE等方法,以及处理重定向、认证、cookies、多线程等场景。通过这些示例,开发者可以快速理解...

    org.apache.commons.httpclient

    这些示例可能包括发起GET和POST请求,设置请求头,处理cookies,管理连接池,以及处理重定向和错误响应。这些例子对于初学者来说是极好的学习资源,可以帮助他们快速理解和掌握HttpClient的用法。 HttpClient的架包...

    HttpClient3.1.jar

    这个库被广泛用于开发需要与Web服务器交互的应用程序,比如发送HTTP请求、接收响应、处理Cookies、管理会话等。以下是对HttpClient3.1及其相关组件的详细解释: 1. **HttpClient**:HttpClient是Apache软件基金会的...

    org.apache.commons.httpclient相关架包

    5. **Cookie管理**:HttpClient可以自动处理服务器返回的cookies,保持会话状态,方便处理登录和其他需要保持状态的场景。 6. **异步请求**:虽然HttpClient主要是同步操作,但通过配合线程或者回调机制,可以实现...

    java httpclient 模拟登录

    在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站的过程,获取登录后的session信息,以便后续能够访问登录后才能看到的页面内容。以下将详细介绍如何使用Java HttpClient进行...

    HttpClient模拟登录实例

    HttpClient提供了`CookieStore`接口,可以用来存储和管理cookies。 总之,HttpClient提供了一套强大的API,使Java开发者能够轻松地模拟浏览器进行HTTP通信,包括模拟登录操作。通过理解其核心概念和方法,我们可以...

    org.apache.commons.httpclient相关资源包

    Apache HttpClient库是Apache软件基金会的一个项目,它提供了对HTTP协议的全面支持,包括GET、POST、PUT等HTTP方法,以及处理cookies、重定向、身份验证等功能。 描述中提到的三个JAR文件分别是: 1. **commons-...

    HttpClient jar包下载

    9. **Cookie管理**:HttpClient有一个CookieStore接口,用于存储和管理cookies。这在需要保持会话状态或处理服务器的Set-Cookie响应头时很有用。 10. **错误处理**:在处理响应时,需要检查状态码以确定请求是否...

    httpClient入门

    4. `commons-codec-1.4.jar`:提供了各种编码算法,如Base64和Hex,HttpClient可能用它来编码URL、处理cookies或其他需要编码的数据。 在使用HttpClient时,开发者需要注意一些最佳实践,例如正确关闭连接,处理...

    httpclient如何保持session会话模拟登录后的操作

    本文将详细讲解如何使用HTTPClient来保持session会话,从而实现模拟登录后的其他操作。 首先,理解session的概念至关重要。Session是服务器端用来跟踪用户状态的一种机制。在Web应用中,当用户登录后,服务器会为该...

    org.apache.commons.httpclient-3.1.jar

    4. **管理Cookies**:维持会话状态,实现登录保持功能。 5. **使用代理**:在需要经过代理服务器访问互联网的环境中工作。 6. **进行认证**:对受保护的Web资源进行身份验证。 总的来说,Apache Commons HttpClient...

Global site tag (gtag.js) - Google Analytics