java httpclient设置超时时间和代理的方法

 更新时间:2020年02月10日 10:30:01   作者:孙华栋  
这篇文章主要介绍了java httpclient设置超时时间和代理的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

设置超时时间

设置HttpClient的超时时间,非常有必要性,因为httpclient 默认超时时间很长,自己可以测试一下是多久,设置超时时间否则会影响自己系统的业务逻辑,例如阻塞系统,影响系统的吞吐量,占用线程数。

httpclient 4.4版本之后将这些设置封装到 RequestConfig 对象里,其中 setConnectTimeout 是设置连接到目标 URL 的等待时长,超过这个时间还没连上就抛出连接超时;

setConnectionRequestTimeout 是从connect Manager(连接池)获取连接的等待时长,这个版本是共享连接池的;

setSocketTimeout 是连接到目标URL 之后等待返回响应的时长,即超过这个时间就放弃本次调用并抛出

SocketTimeoutException:Read Time Out

public static RequestConfig getRequestConfig(){
    RequestConfig requestConfig = RequestConfig.custom()
        .setConnectTimeout(10000)
        .setSocketTimeout(10000)
        .setConnectionRequestTimeout(6000)
        .build(); return requestConfig;
  }

设置代理

有时候我们线上访问外部第三方的接口的时候,不想暴露真实机器的IP,或者我们的机器不能访问外网的时候,我们可以通过代理服务器来访问,代理服务器充当内网与外网链接的中间人。

httpclient 4.4后设置代理的 IP、端口被封装到 RequestConfig 对象里,通过 HttpHost 对象封装代理的 IP、端口和协议。

这里需要注意的一点是,如果你的目标 URL 是 HTTP 协议的,那么你的代理也应该是 HTTP 协议的,如下 HttpHost 的构造方法可以指定代理服务的协议,不传默认为 HTTP。

public static RequestConfig getRequestConfig(){
    HttpHost proxy = new HttpHost("代理ip",8080,"HTTP");//代理
    RequestConfig requestConfig = RequestConfig.custom()
        .setProxy(proxy)
        .setConnectTimeout(10000)
        .setSocketTimeout(10000)
        .setConnectionRequestTimeout(6000)
        .build();
    return requestConfig;
  }

然后通过 HttpPost 或 HttpGet 的setConfig()方法使其应用到该 config。

HttpPost httpPost = new HttpPost(url); if(null != requestConfig){
  httpPost.setConfig(requestConfig);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 解析JavaSe的抽象类和接口

    解析JavaSe的抽象类和接口

    这篇文章主要为大家详细介绍了JavaSe的抽象类和接口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • Java使用Semaphore对单接口进行限流

    Java使用Semaphore对单接口进行限流

    本篇主要讲如何使用Semaphore对单接口进行限流,主要有三种方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Java二叉树的四种遍历方式详解

    Java二叉树的四种遍历方式详解

    这篇文章主要介绍了Java二叉树的四种遍历,二叉树的遍历可以分为前序、中序、后序、层次遍历,需要的朋友可以参考下
    2021-11-11
  • java实现双人五子棋游戏

    java实现双人五子棋游戏

    这篇文章主要为大家详细介绍了java实现双人五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • java代码规范review异常事故记录

    java代码规范review异常事故记录

    这篇文章主要为大家介绍了java代码规范关于异常review代码发生异常的事故记录,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • 指定springboot的jar运行内存方式

    指定springboot的jar运行内存方式

    这篇文章主要介绍了指定springboot的jar运行内存方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • idea开启mybatis控制台SQL日志打印的代码示例

    idea开启mybatis控制台SQL日志打印的代码示例

    本文主要介绍了idea开启mybatis控制台SQL日志打印的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-12-12
  • Java 和 Scala 如何调用变参

    Java 和 Scala 如何调用变参

    这篇文章主要介绍了Java 和 Scala 如何调用变参,帮助大家更好的理解和学习Java与Scala,感兴趣的朋友可以了解下
    2020-09-09
  • 一文教你如何使用Java灵活读取Excel内容

    一文教你如何使用Java灵活读取Excel内容

    这篇文章主要给大家介绍了关于如何使用Java灵活读取Excel内容的相关资料,读取Excel数据是Java开发中常见的任务,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • jenkins中如何集成commander应用的完整步骤

    jenkins中如何集成commander应用的完整步骤

    jenkins是一个用java编写的开源的持续集成工具,在与oracle发生争执后,项目从hudson项目独立出来,下面这篇文章主要给大家介绍了关于jenkins中如何集成commander应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-05-05

最新评论