在loopj中处理超时异常

时间:2017-03-01 09:17:21

标签: android android-async-http loopj

我在处理asynchttpclient

中的超时异常时遇到错误
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {

    closeProgressDialog();
    Log.e("DB", String.valueOf(error));
    Log.e("DB", String.valueOf(error.getCause() instanceof ConnectTimeoutException));
}

第一个日志会给出回复cz.msebera.android.httpclient.conn.ConnectTimeoutException: Connect to /192.168.0.107:80 timed out

第二个日志提供nullfalse 我想处理超时异常我应该怎么做?

2 个答案:

答案 0 :(得分:2)

您的第二次日志操作基于

error.getCause()

为null或不是ConnectTimeoutException,而在第一个日志操作中,您直接使用方法参数中给出的Throwable

因此,我建议您使用error而非error.getCause()来处理ConnectTimeoutException

Log.e("DB", String.valueOf(error instanceof ConnectTimeoutException)); // --> Should be true now

答案 1 :(得分:0)

我建议增加超时

client.setTimeout(15000);

然后覆盖所有onFailure方法。

@Override
public void onFailure(Throwable error, String content) {
 if ( error.getCause() instanceof ConnectTimeoutException ) {
    System.out.println("Connection timeout !");
 }
}

我希望这能解决问题