zoukankan      html  css  js  c++  java
  • HTTPClient 超时链接设置

    远程访问链接,设置时间,从而减少不必要的麻烦,但是HttpClient版本不一致,方法不一样,所以有了如下设置

    原帖链接:https://www.cnblogs.com/jimmy-muyuan/p/6012736.html

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

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

    ConnectionPoolTimeoutException 获取连接池连接超时

    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.X是这样的
    HttpClient httpClient=new DefaultHttpClient();
    httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,2000);//连接时间
    httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,2000);//数据传输时间

    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这两个超时时间一定要加上,不加就很可能悲剧的了

  • 相关阅读:
    为什么Java中 wait 方法需要在 synchronized 的方法中调用?
    XML常用解析API有哪几种?
    Dubbo 和 Spring Cloud 的区别?
    Java 线程池中 submit() 和 execute()方法有什么区别?
    详细描述一下 Elasticsearch 搜索的过程?
    为表中得字段选择合适得数据类型 ?
    Json有什么作用?
    Ajax的乱码解决问题?
    eclipse安装配置记录
    srs部署/webrtc拉流
  • 原文地址:https://www.cnblogs.com/shuiyelifang/p/7884600.html
Copyright © 2011-2022 走看看