我试图在使用volley的android中捕获基本上两种类型的错误。我已经使用errorListener来进行失败的api调用。以下是我正在做的事情。
Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error instanceof NoConnectionError)
{
// Did not connect
}
else if(error instanceof TimeoutError)
{
//Response Timeout error is what I have assumed.
}
}
};
我基本上有兴趣区分ConnectionTimeOut和ResponseTimeOut。这是正确的
编辑: 我需要进行API调用以进行一些验证,我在2G上。请求将发送到服务器,但由于超时而未收到响应。所以我想知道请求是否已发送到服务器或请求是否完全没有发送到服务器。从我的假设是,如果客户端没有连接到服务器,它将是connectiontimeout错误,否则如果请求被发送到服务器并且客户端没有获得响应那么它将是超时。那么我的理解是正确的还是我错过了什么?
答案 0 :(得分:2)
我认为您可以使用HTTP代码。
如果是408错误,则为请求超时
客户端在服务器准备等待的时间内没有产生请求。客户端可以在以后重复请求而不做任何修改。
如果它是504
服务器在充当网关或代理时,未收到URI指定的上游服务器(例如HTTP,FTP,LDAP)或其访问所需的其他辅助服务器(例如DNS)的及时响应试图完成请求。
要获取错误代码,请执行以下操作:
error.networkResponse.statusCode