文档章节

HttpClient内部三个超时时间的区别

1713716445
 1713716445
发布于 07/17 20:49
字数 529
阅读 32
收藏 2

RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectionRequestTimeout(config.connReqTimeout)   //从连接池中获取连接的超时时间
                            //与服务器连接超时时间:httpclient会创建一个异步线程用以创建socket连接,此处设置该socket的连接超时时间
                    .setConnectTimeout(config.connTimeout)
                    .setSocketTimeout(config.socketTimeout)               //socket读数据超时时间:从服务器获取响应数据的超时时间
                    .build();
            httpClient = HttpClientBuilder.create()
                    .setMaxConnTotal(config.maxConnTotal)                   //连接池中最大连接数
                            /**
                             * 分配给同一个route(路由)最大的并发连接数。
                             * route:运行环境机器 到 目标机器的一条线路。
                             * 举例来说,我们使用HttpClient的实现来分别请求 www.baidu.com 的资源和 www.bing.com 的资源那么他就会产生两个route。
                             */
                    .setMaxConnPerRoute(config.maxConnPerRoute)
                    .setDefaultRequestConfig(requestConfig)
                    .build();

  1. ConnectionRequestTimeout从连接池中获取可用连接超时 HttpClient中的要用连接时尝试从连接池中获取,若是在等待了一定的时间后还没有获取到可用连接(比如连接池中没有空闲连接了)则会抛出获取连接超时异常。

  2. 连接目标超时connectionTimeout 指的是连接目标url的连接超时时间,即客服端发送请求到与目标url建立起连接的最大时间。如果在该时间范围内还没有建立起连接,则就抛出connectionTimeOut异常。 如测试的时候,将url改为一个不存在的url:“http://test.com” , 超时时间3000ms过后,系统报出异常: org.apache.commons.httpclient.ConnectTimeoutException:The host did not accept the connection within timeout of 3000 ms

  3. 等待响应超时(读取数据超时)socketTimeout 连接上一个url后,获取response的返回等待时间 ,即在与目标url建立连接后,等待返回response的最大时间,在规定时间内没有返回响应的话就抛出SocketTimeout。 测试的时候的连接url为我本地开启的一个url,http://localhost:8080/firstTest.htm?method=test 在我这个测试url里,当访问到这个链接时,线程sleep一段时间,来模拟返回response超时

本文转载自:https://blog.csdn.net/zhongzh86/article/details/46348933

共有 人打赏支持
1713716445
粉丝 1
博文 146
码字总数 34488
作品 0
静安
程序员
Android 浅谈HttpClient工具类

在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过它的...

Jonson
2013/07/25
0
3
研究支付时碰到了 httpclient 围观

HttpClient最重要的功能是执行HTTP方法。一个HTTP方法的执行包含一个或多个HTTP请求/HTTP响应交换,通常由HttpClient的内部来处理。而期望用户提供一个要执行的请求对象,而HttpClient期望传...

JAVA码猿
2017/11/07
0
0
使用单例模式实现自己的HttpClient工具类

引子 在Android开发中我们经常会用到网络连接功能与服务器进行数据的交互,为此Android的SDK提供了Apache的HttpClient来方便我们使用各种Http服务。你可以把HttpClient想象成一个浏览器,通过...

moz1q1
2015/04/01
0
0
HttpClient 4.3超时设置

最近用到了HttpClient写爬虫,可能我有新版本强迫症,老是喜欢用新版本的东西(虽说新版本不一定好用),然后就用了HttpClient 4.3。HttpClient这货和Lucene一样,每个版本的API都变化很大,这有...

Docee
2013/11/03
0
8
Apache HttpClient 资源释放、请求超时,导致线程池用光、内存不足

Apache HttpClient,据说很强大,可以支持峰值一秒7万以上的请求。不过需要注意一些资源释放和超时处理的问题。 问题1:线程资源无法释放,最终导致内存不足、或线程池被用光。 问题代码: ...

onedotdot
前天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里P8架构师深度概述分布式架构

简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝...

java知识分子
11分钟前
0
0
zabbix利用自带的模板监控mysql数据库

zabbix利用自带的模板监控mysql数据库                                     作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 有些东...

linjin200
17分钟前
0
0
当刷新的Sandbox后,需要重新发布社区

当刷新的Sandbox后,需要重新发布社区 然后在登录页面设置中选择login/forgot password

在山的那边
18分钟前
0
0
Ubuntu 镜像文件下载

https://www.ubuntu.com/download/desktop

15834278076
21分钟前
0
0
解决php -v查看到版本于phpinfo()打印的版本不一致问题

一般造成这种原因可能是升级或多版本 用php -v 和phpinfo()查出来版本不一致,怎么解决呢 编辑/etc/profile文件在最后一行添加一个环境变量: export PATH="/usr/local/php/bin:$PATH" 最后保...

xiaogg
22分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部