簡體   English   中英

android HttpResponse總是第二次被調用時死掉

[英]android HttpResponse always dies second time it is called

我有一個奇怪的故障,我無法進行兩次相同的網絡通話。

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

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

我第一次運行網絡調用它工作得很好,返回數據。 我第二次運行網絡調用(我在這里運行了斷點)它到達HttpResponse對象,運行網絡調用,但隨后立即跳轉到IOException catch。

post對象每次都有相同的數據,所有的cookie都包括在內。

我不是任何了解服務器的人(運行drupal),但它似乎是一個服務器問題。

有人能說清楚為什么會這樣嗎? 為什么我會被禁止第二次獲取數據?

為了進一步了解事物,如果我突破響應對象,我可以看到它可能返回""而不是數據。 如果這有幫助的話

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

起初我記錄錯誤的方式也導致了崩潰,所以我不知道確切的錯誤是什么。

真正的異常是Caused by: org.apache.http.client.CircularRedirectException因為服務器處理API調用的方式

這是答案:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM