6

同じネットワーク呼び出しを 2 回行うことができないという奇妙な不具合があります。

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

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

初めてネットワーク呼び出しを実行すると、問題なく動作し、データが返されます。2 回目にネットワーク呼び出しを実行すると (ここでブレーク ポイントを実行しました)、HttpResponse オブジェクトに到達し、ネットワーク呼び出しを実行しますが、すぐにIOExceptioncatch にジャンプします。

オブジェクトにはpost毎回同じデータがあり、Cookie はすべて含まれています。

私はサーバーに精通している(drupalを実行している)人ではありませんが、サーバーの問題のようです。

なぜこれが起こるのか、誰かが光を当てることができますか? 2 回目のデータの取得が禁止されるのはなぜですか?

物事をさらに明らかにするために、応答オブジェクトを突破すると""、データの代わりに返される可能性があることがわかります。それがまったく役立つなら

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
4

1 に答える 1

0

最初は、エラーをログに記録していた方法でもクラッシュが発生したため、正確なエラーが何であるかがわかりませんでした。

実際の例外は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);

于 2012-05-15T15:41:40.467 に答える