几周前,我在 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
但我们将 302 重定向到不同的 URL。它在浏览器和应用程序的 iPad 版本上运行良好,但对于 Android,我得到org.apache.http.client.HttpResponseException: Not Found
.
我觉得很奇怪,Android 在重定向方面如此痛苦。为什么它会有这样的行为,是否有合理的解决方法?