HttpClient超时设置

场景:最近并发较高,看到响应时间6s的时候,心里咯噔一下,我记得我设置的超时时间是5s啊。

 

原来读取超时时间没生效,只生效了连接超时时间。

ConnectionTimeout:这定义了通过网络与服务器建立连接的超时时间。Httpclient包中通过一个异步线程去创建与服务器的socket连接,这就是该socket连接的超时时间,此处设置为3秒。

将url改为一个不存在的url,则会抛出org.apache.commons.httpclient.ConnectTimeoutException

SocketTimeout:这定义了Socket读数据的超时时间,即从服务器获取响应数据需要等待的时间,此处设置为5秒。

请求的地址sleep5s后返回数据,则抛出:java.net.SocketTimeoutException: Read timed out

 

 

这是个3.X的超时设置方法

HttpClient client = new HttpClient();

client.setConnectionTimeout(30000);

client.setTimeout(30000);

4.3版本超时设置

CloseableHttpClient httpClient = HttpClients.createDefault();

HttpGet httpGet=new HttpGet("http://www.baidu.com");//HTTP Get请求

RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(2000).setConnectTimeout(2000).build();//设置请求和传输超时时间

httpGet.setConfig(requestConfig);

httpClient.execute(httpGet);//执行请求

 

以后再写httpClient这两个超时时间一定要加上,不加就很可能悲剧的了

时间: 2024-10-18 22:25:49

HttpClient超时设置的相关文章

org.apache.http.client.HttpClient; HttpClient 4.3超时设置

可用的code public static String doPost(String url, String params, String contentType) /*throws IOException */{ CloseableHttpClient client = HttpClients.createDefault(); RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(httpSoTimeout)

Java中httpClient中三种超时设置

本文章给大家介绍一下关于Java中httpClient中的三种超时设置小结 在Apache的HttpClient包中,有三个设置超时的地方: /* 从连接池中取连接的超时时间*/ ConnManagerParams.setTimeout(params, 1000); /*连接超时*/ HttpConnectionParams.setConnectionTimeout(params, 2000); /*请求超时*/ HttpConnectionParams.setSoTimeout(params,

HttpClient库设置超时

HttpClient库API跟Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样. 3.X是正常的Java语法 HttpClient httpClient=new DefaultHttpClient(); 4.3变成了工厂模式 CloseableHttpClient httpClient = HttpClients.createDefault(); 超时设置方法 3.x HttpClient client = new Ht

java-commons-HttpClient超时设置setConnectionTimeout和setSoTimeout

问题 之前使用httpclient请求数据 源码方法: public static String doHttp(HttpMethod result, int timeout, String charset) { HttpClient client = new HttpClient(); try { HttpConnectionManagerParams managerParams = client.getHttpConnectionManager().getParams(); managerPa

使用Jsoup获取网页内容超时设置

使用Jsoup获取网页内容超时设置 最近使用Jsoup来抓取网页,并对网页进行解析,发现很好用.在抓取过程中遇到一个问题,有些页面总是报Timeout异常,开始想是不是被抓取网站对IP进行了限制,后来发现用HttpClient可以获取到内容. 原来我最开始使用Jsoup.connect(url).get();方法获取网页内容,这种方式使用的是默认超时时间3秒. 原来Jsoup是可以设置超时的,修改成如下就可以了: Jsoup.connect(url).timeout(30000).get();

HttpClient超时的用法

HttpClient在运用中有两个超时时刻,是一向接触和运用的,由于前次工作中运用httpClient造成了体系悲惨剧的情况,特别对它的两个超时时刻进行了小小的测验,在这里记录下. 测验版别为HttpClient——3.1 一:衔接超时:connectionTimeout 1:指的是衔接一个url的衔接等待时刻. 2:设置办法为: public class TestHttpClientMain { /** * @param args */ public static void main(Stri

commons-httpclient中的超时设置

connectionTimeout与soTimeout的差异,前者指创建一个有效的客户端到服务端链接的最大允许时间,后者指socket接收data的时间. connectionManager.getParams().setConnectionTimeout(50); connectionManager.getParams().setSoTimeout(100); 调用connectionTimeout属性的代码: //org.apache.commons.httpclient.protocol.

http超时设置

http协议中可以设置超时(连接超时.响应超时),具体设置情景如下: 1.java api的方式: JDK 1.5以前的版本,只能通过设置两个系统属性来控制网络超时: String szUrl = "http://www.ee2ee.com/"; URL url = new URL(szUrl); HttpURLConnection urlCon = (HttpURLConnection)url.openConnection(); //HttpURLConnection是基于HTTP协

JDBC超时设置【转】

恰当的JDBC超时设置能够有效地减少服务失效的时间.本文将对数据库的各种超时设置及其设置方法做介绍. 真实案例:应用服务器在遭到DDos攻击后无法响应 在遭到DDos攻击后,整个服务都垮掉了.由于第四层交换机不堪重负,网络变得无法连接,从而导致业务系统也无法正常运转.安全组很快屏蔽了所有的DDos攻击,并恢复了网络,但业务系统却还是无法工作. 通过分析系统的thread dump发现,业务系统停在了JDBC API的调用上.20分钟后,系统仍处于WAITING状态,无法响应.30分钟后,系统抛出