设置异步Http客户端的超时时间

4
我正在使用异步 Http 客户端工具,可以在此处找到:http://loopj.com/android-async-http/。除了大约每十次请求中的一次会出现无限进度对话框外,它都很好用。我认为这意味着由于某种原因没有任何响应被返回,因为我已经编写了代码在 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 回调。 - Bagusflyer
2个回答

2

这个库似乎能够实现你想要的功能,其中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);
}

如果它不能正常工作,最好在这里报告问题。

0

在经历了很多挫折后,我放弃了尝试解决这个问题。但是,如果你升级你的库到最新版本,它会变得非常容易实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接