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);
}

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

相关文章

  • 利用Java编写个"不贪吃蛇"小游戏

    利用Java编写个"不贪吃蛇"小游戏

    贪吃蛇大家一定有玩过了吧,今天小编给大家带来点不一样的。本文将用Java编写一个"不贪吃蛇"小游戏,感兴趣的小伙伴可以动手尝试一下
    2022-08-08
  • Java解决线程安全的两种方式分享

    Java解决线程安全的两种方式分享

    这篇文章主要为大家详细介绍了Java中两种常用的解决线程安全的方式——Synchornized和Lock,文中的示例代码简洁易懂,快跟随小编一起学习起来吧
    2023-06-06
  • 解决springboot druid数据库连接池连接失败后一直重连问题

    解决springboot druid数据库连接池连接失败后一直重连问题

    这篇文章主要介绍了解决springboot druid数据库连接池连接失败后一直重连问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • IDEA查看所有的断点(Breakpoints)并关闭的方式

    IDEA查看所有的断点(Breakpoints)并关闭的方式

    我们在使用IDEA开发Java应用时,基本上都需要进行打断点的操作,这方便我们排查BUG,也方便我们查看设计的是否正确,不过有时候,我们不希望进入断点,所以我们需要快速关闭所有断点,故本文给大家介绍了IDEA查看所有的断点(Breakpoints)并关闭的方式
    2024-10-10
  • spring中使用@Autowired注解无法注入的情况及解决

    spring中使用@Autowired注解无法注入的情况及解决

    这篇文章主要介绍了spring中使用@Autowired注解无法注入的情况及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 深入浅出的讲解Java关键字final的作用

    深入浅出的讲解Java关键字final的作用

    final是Java中非常常见的一个关键字,可以说每天都在使用它,虽然常见,但却也不见得都那么显而易见,今天就来研究一下final,以加深对它的理解和更合理的运用,需要的朋友可以参考下
    2023-06-06
  • SpringBoot中读取application.properties配置文件的方法

    SpringBoot中读取application.properties配置文件的方法

    这篇文章主要介绍了SpringBoot中读取application.properties配置文件的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-02-02
  • 深入解析StringBuffer和StringBuilder的区别

    深入解析StringBuffer和StringBuilder的区别

    以下是对java中StringBuffer与StringBuilder的区别进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • Spring 使用Validation 验证框架的问题详解

    Spring 使用Validation 验证框架的问题详解

    Spring Boot在内部通过集成hibernate-validation已经实现了JSR-349验证规范接口,在Spring Boot项目中只要直接使用就行了。 一般用在Controller中用于验证前端传来的参数。这篇文章给大家介绍Spring Validation 验证框架的相关知识,感兴趣的朋友一起看看吧
    2021-07-07
  • 基于Docker的K8s(Kubernetes)集群部署方案

    基于Docker的K8s(Kubernetes)集群部署方案

    这篇文章主要介绍了基于Docker的K8s(Kubernetes)集群部署方案,文中介绍了安装k8s的可视化界面的相关操作,需要的朋友可以参考下
    2024-01-01

最新评论