Spring Android RestTemplate设置超时时间和超时监听器

4

我在我的Android应用程序中使用以下代码来使用RestTemplates

return getRestTemplate().postForObject(url, forgotPasswordRequest,
                ForgetPassword.Response.class);

现在我该如何设置请求的超时时间并使用超时监听器来捕获请求超时的情况?
顺祝商祺。
1个回答

3
RestTemplate restTemplate = new MyRestTemplate(10*1000);
return restTemplate.postForObject(url, forgotPasswordRequest,
            ForgetPassword.Response.class);

[...]


protected class MyRestTemplate extends RestTemplate {
    public MyRestTemplate(int timeout) {
        if (getRequestFactory() instanceof SimpleClientHttpRequestFactory) {
            Log.d("HTTP", "HttpUrlConnection is used");
            ((SimpleClientHttpRequestFactory) getRequestFactory()).setConnectTimeout(timeout);
            ((SimpleClientHttpRequestFactory) getRequestFactory()).setReadTimeout(timeout);
        } else if (getRequestFactory() instanceof HttpComponentsClientHttpRequestFactory) {
            Log.d("HTTP", "HttpClient is used");
            ((HttpComponentsClientHttpRequestFactory) getRequestFactory()).setReadTimeout(timeout);
            ((HttpComponentsClientHttpRequestFactory) getRequestFactory()).setConnectTimeout(timeout);
        }
    }
}

好的,那么如何检测超时?我假设会抛出异常? - linuxdan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接