2012-05-15 18 views
6

Tengo un error extraño donde no puedo hacer la misma llamada de red dos veces.android HttpResponse siempre muere la segunda vez que se llama

HttpClient client = new DefaultHttpClient(); 
    HttpPost post = new HttpPost(url); 

    try { 
     HttpResponse response = client.execute(post, new BasicHttpContext()); 

La primera vez que ejecuto la llamada de red funciona bien, se devuelven los datos. La segunda vez que ejecuto la llamada de red (he ejecutado puntos de ruptura aquí) llega al objeto HttpResponse, ejecuta la llamada de red, pero luego salta de inmediato a la captura IOException.

el objeto post tiene los mismos datos cada vez, las cookies están todas incluidas.

No conozco a nadie que conozca el servidor (ejecutando drupal), pero parece un problema de servidor.

¿Alguien puede arrojar luz sobre por qué esto sucedería? ¿Por qué se me prohibiría obtener datos por segunda vez?

Para arrojar más luz sobre las cosas, si rompo el objeto de respuesta, puedo ver que puede devolver "" en lugar de datos. si eso ayuda a todos

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 
+0

¿Qué es la excepción que lanza? – techiServices

+0

IOException, menciono que – CQM

+0

lo sé pero IOException cubre todas las excepciones IO. ¿Qué dice el LogCat? – techiServices

Respuesta

0

Al principio, la forma en que estaba registrando los errores también causó un accidente, por lo que no sabía lo que era el error exacto.

La excepción real era Caused by: org.apache.http.client.CircularRedirectException debido a que la forma en que el servidor gestiona las llamadas API

Esta es la respuesta de:

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

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

Cuestiones relacionadas