我正在使用可在此处找到的异步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();
}
答案 0 :(得分: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
答案 1 :(得分:0)
经过多次挫折之后,我放弃了解决这个问题,但是如果你只是升级你的lib,那么最新版本可以很容易地实现这一点。
答案 2 :(得分:0)
我认为更好的方法是使用以下重写方法
@Override
public void onStart() {
super.onStart();
pdialog.dismiss();
}
@Override
public void onFinish() {
super.onFinish();
pdialog.dismiss();
}