Android HttpResponse meurt toujours la deuxième fois, il est appelé

J’ai un pépin étrange où je ne peux pas faire deux fois le même appel réseau.

HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost(url); try { HttpResponse response = client.execute(post, new BasicHttpContext()); 

La première fois que je lance l’appel réseau, cela fonctionne très bien, les données sont renvoyées. La deuxième fois que je lance l’appel réseau (j’ai des points d’arrêt par ici), il arrive à l’object HttpResponse, exécute l’appel réseau, puis passe immédiatement à l’interception IOException .

l’object de post a les mêmes données à chaque fois, les cookies sont tous inclus.

Je ne suis pas entourée de personnes connaissant bien le serveur (exécutant drupal), mais cela semble être un problème de serveur.

Quelqu’un peut-il expliquer pourquoi cela se produirait? Pourquoi m’empêcherais-je de récupérer des données une seconde fois?

Pour éclairer davantage les choses, si je franchis l’object de réponse, je peux voir que cela peut retourner "" au lieu de données. Si cela peut aider

 05-15 11:22:34.612: E/(1094): ObjectService 05-15 11:22:34.612: E/(1094): org.apache.http.client.ClientProtocolException 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:557) 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 05-15 11:22:34.612: E/(1094): at com.fivepoints.service.ObjectService.getObject(ObjectService.java:121) 05-15 11:22:34.612: E/(1094): at com.fivepoints.model.team.TeamView$ActivityListTask.doInBackground(TeamView.java:94) 05-15 11:22:34.612: E/(1094): at com.fivepoints.model.team.TeamView$ActivityListTask.doInBackground(TeamView.java:1) 05-15 11:22:34.612: E/(1094): at android.os.AsyncTask$2.call(AsyncTask.java:185) 05-15 11:22:34.612: E/(1094): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 05-15 11:22:34.612: E/(1094): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 05-15 11:22:34.612: E/(1094): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 05-15 11:22:34.612: E/(1094): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 05-15 11:22:34.612: E/(1094): at java.lang.Thread.run(Thread.java:1019) 05-15 11:22:34.612: E/(1094): Caused by: org.apache.http.client.CircularRedirectException: Circular redirect to 'http://mysite.com/demoObject/_c' 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.DefaultRedirectHandler.getLocationURI(DefaultRedirectHandler.java:173) 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.DefaultRequestDirector.handleResponse(DefaultRequestDirector.java:903) 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:468) 05-15 11:22:34.612: E/(1094): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 05-15 11:22:34.612: E/(1094): ... 10 more 

Au début, la façon dont je consignais les erreurs provoquait également un plantage, alors je ne savais pas quelle était l’erreur exacte.

La véritable exception a été Caused by: org.apache.http.client.CircularRedirectException car la façon dont le serveur gère les appels d’API

Ceci est la réponse de:

https://stackoverflow.com/a/6699772/727429

HttpClient client = new DefaultHttpClient(); client.getParams().setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);