httpclient 4.5.1---状态管理
来源:互联网 发布:双色球霸主软件怎么样 编辑:程序博客网 时间:2024/04/20 10:29
package com.cycore.dbs.common.demo.hc;import java.io.IOException;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.CookieStore;import org.apache.http.client.config.CookieSpecs;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.protocol.HttpClientContext;import org.apache.http.config.Lookup;import org.apache.http.config.Registry;import org.apache.http.config.RegistryBuilder;import org.apache.http.conn.util.PublicSuffixMatcher;import org.apache.http.conn.util.PublicSuffixMatcherLoader;import org.apache.http.cookie.ClientCookie;import org.apache.http.cookie.CookieOrigin;import org.apache.http.cookie.CookieSpec;import org.apache.http.cookie.CookieSpecProvider;import org.apache.http.impl.client.BasicCookieStore;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.cookie.BasicClientCookie;import org.apache.http.impl.cookie.DefaultCookieSpecProvider;import org.apache.http.impl.cookie.RFC6265CookieSpecProvider;public class HcStateManagementDemo {/** * 创建客户端cookie对象 */public void m1(){BasicClientCookie cookie = new BasicClientCookie("name", "value");//Set effective domain and path attributescookie.setDomain(".mycompany.com");cookie.setPath("/");//Set attributes exactly as sent by the servercookie.setAttribute(ClientCookie.PATH_ATTR, "/");cookie.setAttribute(ClientCookie.DOMAIN_ATTR, ".mycompany.com");}/** * cookie说明:CookieSpec接口代表了一个cookie管理说明。该说明被期望服从以下规则: * 1.Set-Cookie头的解析规则;2.解析后的cookie的验证规则;3.指定主机、端口和路径的cookie头的格式化。 * * HttpClient可以使用CookieSpec的多种实现来工作,强烈推荐在新应用中使用Standard或Standard strict策略。 * Cookie策略可以在HttpClient中设置且可根据需要在请求层覆盖掉它。 * */public void m2(){RequestConfig globaConfig=RequestConfig.custom()//.setCookieSpec(CookieSpecs.DEFAULT).build();CloseableHttpClient httpClient=HttpClients.custom().setDefaultRequestConfig(globaConfig).build();RequestConfig localConfig=RequestConfig.custom()//.setCookieSpec(CookieSpecs.STANDARD_STRICT).build();HttpGet httpGet=new HttpGet("/");httpGet.setConfig(localConfig);}/** * 为了实现自定义cookie策略应该创建一个CookieSpec接口的自定义实现, * 创建一个CookieSpecProvider实现去创建和初始化自定义说明的实例和用HttpClient注册工厂。 * 一旦自定义说明被注册,它可以和标准cookie说明一样被激活。 */public void m3(){PublicSuffixMatcher publicSuffixMatcher=PublicSuffixMatcherLoader.getDefault();Registry<CookieSpecProvider> r=RegistryBuilder.<CookieSpecProvider>create()//.register(CookieSpecs.DEFAULT, new DefaultCookieSpecProvider(publicSuffixMatcher)).register(CookieSpecs.STANDARD, new RFC6265CookieSpecProvider(publicSuffixMatcher))//.register("easy", new EasySpecProvider()).build();RequestConfig requestConfig=RequestConfig.custom().setCookieSpec("easy").build();CloseableHttpClient httpClient=HttpClients.custom().setDefaultCookieSpecRegistry(r).setDefaultRequestConfig(requestConfig).build();}/** * cookie持久化:HttpClient能和一个实现了CookieStore接口的持久化cookie存储的 * 任何物理表现形式一起工作。默认的CookieStore实现叫BasicCookieStore实际上是基于 * java.util.ArrayList的简单实现。当容器对象进行垃圾回收机制时,存在BasicClientCookie中的 * cookie对象会被丢失。用户可以可根据需要提供更复杂的实现。 */public void m4(){//Create a local instance of cookie storeCookieStore cookieStore=new BasicCookieStore();//Populate cookies if neededBasicClientCookie cookie=new BasicClientCookie("name", "value");cookie.setDomain(".mycompany.com");cookie.setPath("/");cookieStore.addCookie(cookie);//Set the storeCloseableHttpClient httpClient=HttpClients.custom().setDefaultCookieStore(cookieStore).build();}/** * HTTP 状态管理和执行上下文:在HTTP请求章节中HttpClient提供了如下和执行上下文相关的状态管理对象: * 1.Lookup实例代表了实际的cookie说明注册。设置在本地上下文中的该属性值优先于默认值。 * 2.CookieSpec实例代表了实际的cookie说明。 * 3.CookieOrigin实例代表了源服务器的实际详细信息。 * 4.CookieStore实例代表了实际的cookie存储。设置在本地上下文中的该属性值优先于默认值。 * * 本地的HttpContext对象可以用来定制优先于请求执行的HTTP状态管理上下文,或者在请求执行后检查它的状态。 * 用户可以使用分离的执行上下文以实现每一个用户(或每一个线程)的状态管理。 * 一个定义在本地上下文中的cookie说明注册和cookie存储将优先于设置在HTTP客户端层面的默认值。 * @throws IOException * @throws ClientProtocolException */public void m5() throws ClientProtocolException, IOException{Lookup<CookieSpecProvider> cookieSpecReg =RegistryBuilder.<CookieSpecProvider>create().build();CookieStore cookieStore = new BasicCookieStore();HttpClientContext context = HttpClientContext.create();context.setCookieSpecRegistry(cookieSpecReg);context.setCookieStore(cookieStore);CloseableHttpClient httpClient = HttpClients.createDefault();HttpGet httpGet = new HttpGet("http://somehost/");CloseableHttpResponse response1 = httpClient.execute(httpGet, context);//<...>//Cookie origin detailsCookieOrigin cookieOrigin = context.getCookieOrigin();//Cookie spec usedCookieSpec cookieSpec = context.getCookieSpec();}}
0 0
- httpclient 4.5.1---状态管理
- HttpClient状态管理
- httpclient 4.5.1---连接管理
- HttpClient 教程3 (HTTP状态管理)
- HttpClient 教程3 (HTTP状态管理)
- HttpClient学习研究---第三章:http状态管理
- HttpClient 4.3详细教程之Http状态管理
- 状态管理问题(1)
- Redux状态管理1
- httpclient 状态码
- HttpClient状态码大全
- HttpClient 4.3.6 教程 第3章 HTTP状态管理 【翻译】
- httpclient获取状态码(4.5.2版本)
- httpclient 4.5.1---基础
- HttpClient连接管理
- httpclient 自己管理cookie
- httpclient cooike自行管理
- HttpClient连接管理
- 小白笔记--------------二分搜索算法
- 字符串应用(2)基本例程
- MR案例之倒排索引TF-IDF
- FragmentTransaction的commit的异步操作
- win7win8 64位汇编开发环境合集安装与设置
- httpclient 4.5.1---状态管理
- iOS SDK与Xcode
- oracle_触发器监控修改字段的客户端IP、用户名、新旧值
- mybatis中mapper类型的XML
- Build.gradle详细配置说明
- Numpy库进阶教程(一)求解线性方程组
- 使用SOCKET实现TCP/IP协议的通讯
- HDU Let's go to play
- 会话跟踪