httpclient中sessionId的获取与设置

  1. public class HttpSessionId {
  2. public static void main(String[] args) throws Exception {
  3. CloseableHttpClient client = HttpClients.createDefault();
  4. String urlStr = "http://baidu.com";
  5. HttpPost post = new HttpPost(urlStr);
  6. HttpResponse response = client.execute(post);
  7. StatusLine statusLine = response.getStatusLine();
  8. String respon = null;
  9. int statuscode = statusLine.getStatusCode();
  10. if (statuscode == 200) {
  11. CookieStore cookieStore = ((AbstractHttpClient) client).getCookieStore();
  12. List<Cookie> cookies = cookieStore.getCookies();
  13. for (Cookie ck : cookies) {
  14. if ("JESSIONID".equals(ck.getName())) {
  15. String sessionId = ck.getValue();
  16. break;
  17. }
  18. }
  19. }
  20. }
  21. }

hc_post参数

json串形式StringEntity

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

参数形式HttpEntity

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

上传文件MultiPartEntity

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

httpclient超时时间设置

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

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

使用httpParam设置超时时间

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

三个超时时间详解

  1. '从连接池中获取可用连接超时'
  2. httpclient中的要用连接时尝试从连接池中获取,若是在等待了一定时间后还没有获取到可用连接(比如连接池中没有空闲连接)
  3. '连接目标超时connectionTimeout'
  4. 指的是连接目标url的连接超时时间,即客户端发送请求到目标url建立连接的最大时间。
  5. 如果在该时间范围内还没有建立连接,抛出异常
  6. '等待响应超时(读取超时)socketTimeout'
  7. 连接上一个url后,获取response的返回等待时间,即在于目标url建立连接后,等待放回response的最大时间,在规定时间没有
  8. 返回响应的话就抛出SocketTimeout
  9. 测试sockettimeout
  10. 本地开启一个url http://localhost:8080/firstTime?method=test
  11. 这个测试url中,当访问这个链接时,线程sleep一段时间,来模拟返回response时间
  12. @RequestMapping(params = "method=test")
  13. public String testMethod(ModelMap model) {
  14. try {
  15. Thread.sleep(10000);
  16. } catch (InterruptedException e) {
  17. e.printStackTrace();
  18. }
  19. System.out.println("call testMethod method.");
  20. model.addAttribute("name", "test method");
  21. return "test";
  22. }
  23. 将读取response返回超时时间设的时间比那个sleep时间短之后,运行程序给出异常
  24. 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. Windows10 蓝屏 DRIVER_IRQL_NOT_LESS_OR_EQUAL (vfilter.sys)的可能解决方法

    早上我的笔记本从休眠中开机的时候突然出现了蓝屏,这个蓝屏在前几天出现过了.两次提示的终止代码都一样.我的笔记本型号是DELL XPS15 9560 我的笔记本配置: 类别 型号 内存 16GB DDR ...

  2. VC中GetLastError()获取错误信息的使用,以及错误代码的含义

    转载:http://www.seacha.com/article.php/knowledge/windows/mfc/2011/0423/335.html VC中GetLastError()获取错误信 ...

  3. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer 最大生成树 lca

    大概就是要每两个点 只能有一条路径,并且约束,最短的边用来砌墙,那么反之的意思就是最大的边用来穿过 故最大生成树 生成以后 再用lca计算树上两点间的距离 (当然防止生成树是一条链,可以用树的重心作为 ...

  4. UVa 1601 万圣节后的早晨

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  5. spring boot 捕获filter异常 统一返回处理结果

    如前面的文章所述,controller中抛出的异常我们使用ControllerAdvice来处理: @RestControllerAdvice @Slf4j public class GlobalEx ...

  6. 软件测试&安全测试高峰论坛

    Nubia测试以及介绍 基于Cucumber的自动化测试平台 常见Web漏洞之XSS,主要HTML与JS基础.XSS的基础知识与挖掘方法.XSS的利用 自动化测试框架以及测试思路

  7. os.environ() 说明

    我们想要用Python获得一些有关系统的各种信息的时候就不得不想到os的environ,那这里面都具体包含了那些内容呢? 一.简介 对于官方的解释,environ是一个字符串所对应环境的映像对象.这是 ...

  8. sublime+LatexTools引用参考文献

        在用sublime+LatexTools一段时间之后,发现用它来写Latex真的是非常方便,配置好TexLive之后直接CTRL+B就可以直接编译运行了,so cool!但是最近写课程论文的时 ...

  9. codeforces 251 div2 C. Devu and Partitioning of the Array 模拟

    C. Devu and Partitioning of the Array time limit per test 1 second memory limit per test 256 megabyt ...

  10. Ubuntu 下载

    http://releases.ubuntu.com/