【问题标题】:Set Timeout on Asynchronous Http Client在异步 Http 客户端上设置超时
【发布时间】:2013-07-16 20:38:28
【问题描述】:

我正在使用可以在这里找到的异步 Http 客户端:http://loopj.com/android-async-http/

除了每 10 个左右的请求中大约有 1 个最终给我一个无限的进度对话框之外,它的效果很好,我相信这意味着无论出于何种原因都不会返回任何类型的响应,因为我已经编写了代码来关闭onSuccess 和 onFailure 中的对话框,所以我有点困惑这是怎么发生的。

这是我设置请求的代码:

  public static void post(String token,String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
     Log.i(token,"token");
      client.addHeader("token", token);
      client.setTimeout(3000);
      client.post(url, params, responseHandler);


  }

这是我覆盖 onSuccess 和 onFailure 的地方:

@Override
            public void onFailure(Throwable arg0, String arg1) {
                // TODO Auto-generated method stub
                super.onFailure(arg0, arg1);
                pdialog.dismiss();
                Log.i("failed to login", arg1.toString());
                Toast.makeText(getActivity(), arg1.toString() , Toast.LENGTH_LONG).show();
            }

            @Override
            public void onSuccess(final JSONObject json) {
                pdialog.dismiss();
    }

【问题讨论】:

  • 问题解决了吗?我遇到了同样的问题。有时它只是挂在那里。即使我设置了超时,也没有 onFailure 或 onSuccess 回调。

标签: android asynchronous timeout httprequest


【解决方案1】:

在经历了很多挫折之后,我放弃了解决这个问题,但是如果你只是升级你的库,最新版本确实可以很容易地完成这个。

【讨论】:

    【解决方案2】:

    库似乎正在做你想做的事,setTimeout 代码来自 AsyncHttpClient 类

    public void setTimeout(int timeout){
        final HttpParams httpParams = this.httpClient.getParams();
        ConnManagerParams.setTimeout(httpParams, timeout);
        HttpConnectionParams.setSoTimeout(httpParams, timeout);
        HttpConnectionParams.setConnectionTimeout(httpParams, timeout);
    }
    

    如果它不起作用,那么最好报告问题here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2014-05-16
      • 1970-01-01
      • 2017-12-15
      • 2017-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多