httpclient中sessionId的获取与设置

public class HttpSessionId {
public static void main(String[] args) throws Exception {
CloseableHttpClient client = HttpClients.createDefault();
String urlStr = "http://baidu.com";
HttpPost post = new HttpPost(urlStr);
HttpResponse response = client.execute(post); StatusLine statusLine = response.getStatusLine();
String respon = null;
int statuscode = statusLine.getStatusCode();
if (statuscode == 200) {
CookieStore cookieStore = ((AbstractHttpClient) client).getCookieStore();
List<Cookie> cookies = cookieStore.getCookies();
for (Cookie ck : cookies) {
if ("JESSIONID".equals(ck.getName())) {
String sessionId = ck.getValue();
break;
}
}
}
}
}

hc_post参数

json串形式StringEntity

StringEntity stringEntity = new StringEntity(tojson.toJson());
stringEntity.setContentType("text/json");
stringEntity.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE,"application/json"));
httpPost.setEntity(entity);

参数形式HttpEntity

List<NameValuePair> params = new ArrayList<>();
params.add(new NameValuePair("name","ssgao"));
params.add(new NameValuePair("age","30"));
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params,"utf-8");
HttpPost post = new HttpPost("http://127.0.0.1/handle.do");
post.setEntity(entity);

上传文件MultiPartEntity

MultipartEntity entity = new MultipartEntity();
entity.addPart("param1",new StringBody("ssgao",Charset.forName("utf-8")));
entity.addPart("param2",new StringBody("shuoailin",Charset.forName("utf-8")));
entity.addPart("param3",new FileBody(new File("c:\1.txt"))));
request.setEntity(entity);

httpclient超时时间设置

***httpclient内部有三个超时时间设置 ***

连接池获取可用连接超时
连接超时
读取数据超时 不设置超时时间
如果不设置超时时间一旦服务器无响应的情况,如果返回404,50x错误还好,如果没有没有返回,java线程会一直阻塞等待
public class HttpTimeDemo {
public static void main(String[] args) {
RequestConfig requestConfig = RequestConfig.custom()
.setConnectionRequestTimeout(1000) //从连接池中获取连接的超时时间
.setConnectTimeout(1000) //与服务器连接超时时间,httpclient会创建一个异步线程用以创建socket连接
.setSocketTimeout(1000) //socket读取数据超时时间,从服务器获取响应数据的超时时间
.build();
CloseableHttpClient httpClient = HttpClientBuilder.create()
.setMaxConnTotal(100) //连接池中最大连接数
.setMaxConnPerRoute(50) //分配给同一个route(路由)最大的并发连接数
.setDefaultRequestConfig(requestConfig)
.build();
/**
* route: 运行环境机器 到 目标机器的一条线路
* 举例: 我们使用httpclient来分别请求 www.baidu.com的资源和 www.bing.com的资源,那么它就会产生两个route
*/
}
}

使用httpParam设置超时时间

HttpClient httpclient = new  DefaultHttpClient();
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, Config.20000);//连接时间20s
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 60000);//数据传输时间60s 链接超时
httpclient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
读取超时
httpClient.getHttpConnectionManager().getParams().setSoTimeot(60000)

三个超时时间详解

'从连接池中获取可用连接超时'
httpclient中的要用连接时尝试从连接池中获取,若是在等待了一定时间后还没有获取到可用连接(比如连接池中没有空闲连接)
'连接目标超时connectionTimeout'
指的是连接目标url的连接超时时间,即客户端发送请求到目标url建立连接的最大时间。
如果在该时间范围内还没有建立连接,抛出异常
'等待响应超时(读取超时)socketTimeout'
连接上一个url后,获取response的返回等待时间,即在于目标url建立连接后,等待放回response的最大时间,在规定时间没有
返回响应的话就抛出SocketTimeout 测试sockettimeout
本地开启一个url http://localhost:8080/firstTime?method=test
这个测试url中,当访问这个链接时,线程sleep一段时间,来模拟返回response时间
@RequestMapping(params = "method=test")
public String testMethod(ModelMap model) {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("call testMethod method.");
model.addAttribute("name", "test method");
return "test";
} 将读取response返回超时时间设的时间比那个sleep时间短之后,运行程序给出异常
java.net.SocketTimeoutException:Read timed out

httpclient 相关使用介绍的更多相关文章

  1. Android 6.0删除Apache HttpClient相关类的解决方法

    相应的官方文档如下: 上面文档的大致意思是,在Android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类,推荐使用HttpUrlConnection. ...

  2. opensslBIO系列之2---BIO结构和BIO相关文件介绍

    BIO结构和BIO相关文件介绍     (作者:DragonKing Mail:wzhah@263.net 公布于:http://gdwzh.126.com openssl专业论坛)          ...

  3. Oracle 参数文件及相关操作介绍

    Oracle 参数文件及相关操作介绍 by:授客 QQ:1033553122 1.服务器参数文件 服务器参数文件是一个二进制文件,作为初始化参数的存储仓库.实例运行时,可用ALTER SYSTEM来改 ...

  4. MySQL各类日志文件相关变量介绍

    文章转自:http://www.ywnds.com/?p=3721 MySQL各类日志文件相关变量介绍 查询所有日志的变量   1 mysql> show global variables li ...

  5. MyEclipse相关用法介绍

    MyEclipse相关用法介绍 ================================================================================ 编辑: ...

  6. TMF SID性能相关实体介绍

    TMF SID性能相关实体介绍 Copyright © TeleManagement Forum 2013. All Rights Reserved. This document and transl ...

  7. PySpark SQL 相关知识介绍

    title: PySpark SQL 相关知识介绍 summary: 关键词:大数据 Hadoop Hive Pig Kafka Spark PySpark SQL 集群管理器 PostgreSQL ...

  8. 采样方法(二)MCMC相关算法介绍及代码实现

    采样方法(二)MCMC相关算法介绍及代码实现 2017-12-30 15:32:14 Dark_Scope 阅读数 10509更多 分类专栏: 机器学习   版权声明:本文为博主原创文章,遵循CC 4 ...

  9. CPU发展史和相关品牌介绍

    CPU发展史和相关品牌介绍 CPU发展已经有40多年的历史了.我们通常将其分成 六个阶段. (1)第一阶段 (1971年-1973年) .这是4位和8位低档微处理器时代,代表产品是Intel 4004 ...

随机推荐

  1. [c/c++]指针(4)

    现在讲一下指针的主要用途和常见错误. [用途] 1.用作形参 首先,常见新手写交换函数: void swap(int a,int b){ int t = a; a = b; b = t; } 主函数里 ...

  2. Go第二篇之基本语法总结

    Go语言标识符 标识符以字母或下划线开头,大小写敏感 _是特殊标识符,用来忽略结果 Go语言变量的声明 变量(Variable)的功能是存储用户的数据.不同的逻辑有不同的对象类型,也就有不同的变量类型 ...

  3. windows下的gvim和emmet 下载和安装 + "omnifunc is not set" solution?

    注意几个地方: 引导键是ctrl-y, 其他就是实际的操作键了, 如: n下一个插入点, N是上一个插入点(不是p), ctrl-y + i是自动为图片添加宽度和高度尺寸, 要点是要把光标移动到 im ...

  4. Unity 之 图片显示的真实大小

    图片放入Unity中自身的属性 在做帽子游戏的时候,看到这么一段代码 //获取保龄球的自身宽度 float ballWidth=ball.GetComponent<Renderer>(). ...

  5. 【TCP/IP详解 卷一:协议】第十九章 TCP的交互数据流

    19.1 引言 前一章我们介绍了TCP连接的建立与释放:三握四挥,以及状态转移图. TCP报文段分为:交互数据,以及成块数据(下一章介绍). 交互数据:例如telnet,ssh,这种类型的协议在大多数 ...

  6. UVa 11400 照明系统设计

    https://vjudge.net/problem/UVA-11400 题意: 有一个照明系统需要用到n种灯,每种灯的电压为V,电源费用K,每个灯泡费用为C,需要该灯的数量为L.注意到,电压相同的灯 ...

  7. sliva数据库简介--转载

    sliva rRNA数据库(http://www.arb-silva.de/)用来检查和比对RNA序列,既可以针对16S/18S,SSU,也可以针对23S/28S, LSU,包括了Bacteria, ...

  8. bootstrap在ie8下,兼容媒体查询

    最近使用bootstrap做网站的时候发现,在ie8下的媒体查询一直失效: 后来解决了,做如下记录: 1.必须运行在服务器下 2.hack 条件语法,如下: <!--[if lte ie 9]& ...

  9. Ubuntu禁用触摸板

    参考链接: http://www.linuxidc.com/Linux/2012-08/68831.htm http://blog.sina.com.cn/s/blog_a3052b4a0100z4u ...

  10. 升级php7一些需要注意的地方

    1.升级过程涉及代码的主要处理的就是几个扩展(mysql.mssql .mcrypt.ereg)使用到的一些废弃函数(call_user_method.call_user_method_array等) ...