当前位置: 首页 > 知识库问答 >
问题:

RestTemplate读取超时不起作用

訾雅畅
2023-03-14

我有一个springboot rest服务a使用RESTTemplate调用rest服务B。Rest服务A的restTemplate bean是按照下面的代码片段所示的超时设置创建的。

@Bean
RestTemplate getRestTemplate()
{
    CloseableHttpClient  closeableHttpClient = HttpClientBuilder.create().build();
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(closeableHttpClient);
    RestTemplate restTemplate = new RestTemplate(requestFactory);

    requestFactory.setConnectTimeout( 2000 );
    requestFactory.setReadTimeout( 2000 );

    return restTemplate;
}
try{
    restTemplate.postForEntity(urlSvcB, httpEntity, myObject.class);
}
catch (Exception ex){
  .....some code here.....
}

共有1个答案

戚俊健
2023-03-14

如果您正在使用spring boot,那么您可以尝试:

@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) 
{
    return restTemplateBuilder
       .setConnectTimeout(...)
       .setReadTimeout(...)
       .build();
}

如果这还不行,那么在当前代码中,尝试在创建restTemplate或test之前设置requestFactory上的所有道具,方法是去掉CloseableHTTPClient,如下所示:

HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setConnectionRequestTimeout(...);
httpRequestFactory.setConnectTimeout(...);
httpRequestFactory.setReadTimeout(...);
return new RestTemplate(httpRequestFactory);
 类似资料:
  • 我有一个API返回一个json,它是GET方法类型的。因为它是GET,所以当我在浏览器中打开URL时,它可以正常工作并呈现json,但是,当使用RestTemplate检索json时,它失败了。 能否请您提供一种阅读以下API的方法。 API URL:https://www.nseindia.com/API/option-chain-indexs?symbol=nifty Spring BootR

  • 问题内容: 我在使用npm时遇到问题,无法安装任何程序。这是错误消息: 知道为什么吗?这是我的网络设置,似乎我没有配置任何代理。我还禁用了所有防火墙。 问题答案: 用 因此npm要求url而不是。 然后尝试相同的命令

  • 问题内容: 我想为我的Web应用程序使用的rest服务设置连接超时。我正在使用Spring的RestTemplate与我的服务交谈。我进行了一些研究,发现并使用了下面的xml(在我的应用程序xml中),我认为这是为了设置超时。我正在使用Spring 3.0。 我在这里也看到了同样的问题,使用RestTemplate为Spring Web服务设置超时,但是解决方案似乎不太干净,我更愿意通过Sprin

  • 我的要求需要更短的超时,所以我需要能够更改这些。你知道我做错了什么吗? 多谢。

  • 我正在开发一个vaadin web应用程序,我在web.xml中添加了以下代码片段。 现在我注意到,也在30分钟后,我的用户能够使用应用程序,我不想这样。我在vaadin的书上读到了一些关于这个问题的东西,但我并不了解一些东西。 在web.xml中: 会话超时应长于心跳间隔,否则会话在心跳保持活动之前就已关闭。由于会话过期使UI处于假定会话仍然存在的状态,这将在浏览器中导致不同步错误通知。 但是,

  • 我需要知道如何读取(同步或异步不重要)与超时。我想检查一个设备是否与串行端口连接。 为此,我使用,然后等待设备的响应。 如果连接了设备工作正常,但如果没有设备,程序就会停止,这就是我需要超时的原因