2013-07-18 96 views
4

IM使用異步HTTP客戶端,可以在這裏找到:http://loopj.com/android-async-http/設置超時的異步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(); 
    } 
+0

你已經解決了這個問題?我遇到了同樣的問題。有時它只是掛在那裏。即使在設置超時之後,也沒有onFailure或onSuccess回調。 –

回答

1

庫似乎是在做你想讓它做什麼從AsyncHttpClient

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

setTimeout代碼如果它不工作,那麼最好報告問題here

0

經過多次的挫折之後,我放棄瞭解決這個問題,但是最新版本可以很容易地完成這個,如果你只是升級你的lib。

0

我認爲更好的方法是使用下面的重載方法

 @Override 
     public void onStart() { 
      super.onStart(); 

      pdialog.dismiss(); 


     } 

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

     }