首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在RestTemplate中添加超时

问如何在RestTemplate中添加超时
EN

Stack Overflow用户
提问于 2016-06-01 20:00:20
回答 1查看 388关注 0票数 0

我需要在我的代码中添加超时,这是我的代码,但我不知道如何修改此代码来添加超时。

`

代码语言:javascript
复制
 @EBean(scope = EBean.Scope.Singleton)
public class KioraRestClient {

public static final String SERVER_HOST         = KioraBuildConfig.REST_SERVER_API_URL;
public static final String VERSION_SERVER_HOST = KioraBuildConfig.REST_VERSION_SERVER_API_URL;


@AfterInject
void Initialize() {

    try {
        turnOffSslChecking();
    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
    } catch (KeyManagementException e) {
        e.printStackTrace();
    }

    // this factory needs to be crated here since requires some injected dependencies
    ClientHttpRequestFactory keyPairRequestFactory = new KioraHttpRequestFactory(
            new ContentAuthUriDecorator(authPreferences)
    );

    ClientHttpRequestFactory timeoutFactory = new SimpleTimeoutRequestFactory();        


    //TODO: Extract common interface for the controllers
    LicenseController.getRestTemplate().setRequestFactory(keyPairRequestFactory);
    UserController.getRestTemplate().setRequestFactory(keyPairRequestFactory);
    ContentController.getRestTemplate().setRequestFactory(keyPairRequestFactory);

    VersionController.getRestTemplate().setRequestFactory(timeoutFactory);
    RootIPController.getRestTemplate().setRequestFactory(keyPairRequestFactory);

    PurchaseController.getRestTemplate().setRequestFactory(keyPairRequestFactory);
    HotspotController.getRestTemplate().setRequestFactory(keyPairRequestFactory);

`

我试着像这样添加超时,但这个20秒的超时似乎没有效果。

代码语言:javascript
复制
HttpComponentsClientHttpRequestFactory  httpRequestFactory =  new     HttpComponentsClientHttpRequestFactory();
httpRequestFactory.setConnectTimeout(20 * 1000); 
 PurchaseController.getRestTemplate().setRequestFactory(httpRequestFactory);
    HotspotController.getRestTemplate().setRequestFactory(httpRequestFactory);

`

EN

回答 1

Stack Overflow用户

发布于 2016-07-01 07:39:12

您仅设置连接超时,而不设置读取超时。connect timeout定义在放弃尝试连接之前等待多长时间。但是,读取超时定义了等待响应的时间。

以同样的方式设置读取超时,您将能够看到它生效

代码语言:javascript
复制
httpRequestFactory.setReadTimeout(20 * 1000);

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/client/HttpComponentsClientHttpRequestFactory.html#setReadTimeout-int-

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37568050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档