4

我正在使用可以在这里找到的异步 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();
    }
4

2 回答 2

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);
}

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

于 2013-07-18T05:50:44.430 回答
0

After much frustration I gave up on figuring this out BUT the latest version DOES make it very easy to accomplish this if you just upgrade your lib.

于 2014-06-08T07:59:56.703 回答