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,最新版本确实可以很容易地实现这一点。