在异步Http客户端上设置超时



im使用异步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();
    }

库似乎正在执行您希望它执行的操作,AsyncHttpClient类中的setTimeout代码

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

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

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

相关内容

  • 没有找到相关文章

最新更新