数週間前に、通常のブラウザーのようにリダイレクトをたどらない WebView で問題が発生しました。多くのSO回答で与えられた次の提案を使用しました:
String newUrl = response.getFirstHeader("Location").getValue();
しかし、それはリダイレクトの1つのステップしか与えませんでしたが、それ以上ではありませんでした。リダイレクトを繰り返しリッスンし、各ステップを手動で実行することで、この問題を回避しました。
今、私は次のコードを使用しています:
HttpClient httpClient = MyApp.getHttpClient();
HttpPost httpPost = new HttpPost(con.getString(R.string.platform_url_getBalances));
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("sid", String.valueOf(sessionKey)));
ResponseHandler<String> responseHandler = new BasicResponseHandler();
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
String response = null;
// Execute HTTP Post Request. Response body returned as a string
response = httpClient.execute(httpPost, responseHandler);
最近、 のエンドポイントがR.string.platform_url_getBalances
変更されましたが、別の URL への 302 リダイレクトを追加しました。ブラウザと iPad バージョンのアプリでは問題なく動作しますが、Android ではorg.apache.http.client.HttpResponseException: Not Found
.
リダイレクトに関しては、Android がこれほど苦労するのは非常に奇妙です。なぜこのように動作し、それを回避する合理的な方法はありますか?