Установка таймаута для асинхронного клиента Http

Im, используя Asynchronous Http Client, который можно найти здесь: http://loopj.com/android-async-http/

И он отлично работает, кроме примерно 1 из каждых 10 или около того запросов, которые я в конечном итоге предоставляю мне бесконечный диалог прогресса, который, я считаю, означает по какой-либо причине никакой ответ какого-либо вида не возвращается, потому что я написал код, чтобы отклонить диалог в 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(); } 

Кажется, что библиотека делает то, что вы хотите, код 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); } 

Если он не работает, лучше сообщите об этом здесь.

После долгих разочарований я отказался от этого, но последняя версия делает это очень легко, если вы просто обновите свою библиотеку.

Я думаю, что лучший способ – использовать следующие переопределенные методы

  @Override public void onStart() { super.onStart(); pdialog.dismiss(); } @Override public void onFinish() { super.onFinish(); pdialog.dismiss(); }