gpt4 book ai didi

android - 在 android 中处理 RestClient 调用的连接和读取超时

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:05:13 26 4
gpt4 key购买 nike

我有一个 RestService 接口(interface),其中包含我在整个应用程序中使用的许多 rest 调用。

我正在为处理connectionread-timeouts设置超时

ClientHttpRequestFactory httpFactory = myRestService.getRestTemplate().getRequestFactory();
if(httpFactory!=null)
{
if(httpFactory instanceof SimpleClientHttpRequestFactory)
{
((SimpleClientHttpRequestFactory)httpFactory).setConnectTimeout(10*1000);
((SimpleClientHttpRequestFactory)httpFactory).setReadTimeout(30*1000);
}
else if(httpFactory instanceof HttpComponentsClientHttpRequestFactory)
{
((HttpComponentsClientHttpRequestFactory)httpFactory).setConnectTimeout(10*1000);
((HttpComponentsClientHttpRequestFactory)httpFactory).setReadTimeout(30*1000);
}
}

但我无法处理超时情况。我想过使用这个方法,但是当 rest 调用失败时它不会进入这个循环。

myRestService.getRestTemplate().setErrorHandler(new ResponseErrorHandler() 
{
@Override
public boolean hasError(ClientHttpResponse paramClientHttpResponse) throws IOException
{
Log.e(TAG, paramClientHttpResponse==null?"Null response" : ("Has Error : " + paramClientHttpResponse.getStatusText()+" , status code : "+paramClientHttpResponse.getStatusCode()));

return false;
}
@Override
public void handleError(ClientHttpResponse paramClientHttpResponse) throws IOException
{
Log.e(TAG, paramClientHttpResponse==null?"Null response":("Handle Error : " + paramClientHttpResponse.getStatusText()+" , status code : "+paramClientHttpResponse.getStatusCode()));
}
});

谁能帮我解决这个问题......!?

最佳答案

超时、错误的网关、找不到主机和其他socket 异常不能被ErrorHandlers 覆盖。 ErrorHandlers 的目标是查找现有 Response 中的错误,如 ResponseErrorHandler 的方法签名中所述。

所有套接字异常都会抛出 RestClientException 并且必须为每个 RestTemplate 操作捕获,例如 try...catch block 中的 getForObject()。

try {
repr = myRestService.getRestTemplate().getForObject(url, responseType, vars);
} catch (RestClientException e) {
//Further exception processing, forming negative response should be here
}

查看 reference .

希望对您有所帮助。

关于android - 在 android 中处理 RestClient 调用的连接和读取超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16542892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com