2015-07-22 2 views
1

У меня есть фрагмент, где я вызываю вызов API с использованием библиотеки Async Http.ClientProtocolException при вызове API во второй раз в этом фрагменте

Это код:

private void getPeers() { 
    Log.i("REST", "getPeers"); 
    RestClient.get(RestClient.PEERS_URL, null, new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 
      Log.i("REST", "onFailure"); 
      stopRefreshing(); 
      if (statusCode == 0) { 
       showNoConnectionError(); 
      } 
     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, String responseString) { 
      Log.i("REST", "onSuccess"); 
      stopRefreshing(); 
      // Create arraylist from json 
      peerArrayList = new Gson().fromJson(responseString, new TypeToken<List<Peer>>() { 
      }.getType()); 
      // Show ListView 
      populateListView(peerArrayList); 
     } 
    }); 
} 

Когда я называю getPeers() в первый раз, все работает хорошо.

После того, как он называется во второй раз, он загружается в течение 5-10 секунд, а затем истекает время.

Это журнал после того, как его называют в 2 раза:

07-22 18:33:08.909 30671-30671/com.challenge.challengeapp I/REST﹕ getPeers 
07-22 18:33:09.044 30671-30671/com.challenge.challengeapp I/REST﹕ onSuccess 
07-22 18:33:11.707 30671-30671/com.challenge.challengeapp I/REST﹕ getPeers 
07-22 18:33:19.589 30671-6125/com.challenge.challengeapp W/System.err﹕ org.apache.http.client.ClientProtocolException 
07-22 18:33:19.593 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:562) 
07-22 18:33:19.594 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:492) 
07-22 18:33:19.594 30671-6125/com.challenge.challengeapp W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.makeRequest(AsyncHttpRequest.java:148) 
07-22 18:33:19.594 30671-6125/com.challenge.challengeapp W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.makeRequestWithRetries(AsyncHttpRequest.java:179) 
07-22 18:33:19.594 30671-6125/com.challenge.challengeapp W/System.err﹕ at com.loopj.android.http.AsyncHttpRequest.run(AsyncHttpRequest.java:108) 
07-22 18:33:19.595 30671-6125/com.challenge.challengeapp W/System.err﹕ at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
07-22 18:33:19.595 30671-6125/com.challenge.challengeapp W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
07-22 18:33:19.595 30671-6125/com.challenge.challengeapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
07-22 18:33:19.595 30671-6125/com.challenge.challengeapp W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ at java.lang.Thread.run(Thread.java:818) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'http://52.17.110.217/api/friends/' 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.DefaultRedirectHandler.getLocationURI(DefaultRedirectHandler.java:178) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:928) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:480) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560) 
07-22 18:33:19.597 30671-6125/com.challenge.challengeapp W/System.err﹕ ... 9 more 
07-22 18:33:19.606 30671-30671/com.challenge.challengeapp I/REST﹕ onFailure 

Если я называю это один раз, а затем перезапустить приложение, это работает. Это происходит, когда я называю это 2 раза подряд.

+0

Вы решили эту проблему? –

ответ

0

Используйте этот метод вместо RestClient.

public static AsyncHttpClient getAsyncHttpClient() { 
     return new AsyncHttpClient(); 
    } 
Смежные вопросы