【问题标题】:handle timeout exception in loopj在loopj中处理超时异常
【发布时间】:2017-03-01 09:17:20
【问题描述】:

我在处理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

而第二个日志给出null 或false 我想处理超时异常该怎么办?

【问题讨论】:

    标签: android android-async-http loopj


    【解决方案1】:

    您的第二个日志操作基于

    error.getCause()
    

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

    因此,我建议使用error 而不是error.getCause() 来处理ConnectTimeoutException。

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

    【讨论】:

      【解决方案2】:

      我建议增加超时时间

      client.setTimeout(15000);
      

      然后覆盖所有 onFailure 方法。

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

      希望能解决问题

      【讨论】:

        猜你喜欢
        • 2014-05-30
        • 2017-01-24
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        • 2011-02-17
        • 2015-02-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多