处理HttpClient重定向

我正在将一些数据发布到正在回答302移动临时的服务器上。

我希望HttpClient遵循重定向并自动获取新位置,因为我相信这是HttpClient的默认行为。但是,我得到一个例外,而不是按照重定向:(

这是相关的代码,任何想法都将不胜感激:

HttpParams httpParams = new BasicHttpParams();

HttpClientParams.setRedirecting(httpParams, true);

SchemeRegistry schemeRegistry = registerFactories();

ClientConnectionManager clientConnectionManager = new ThreadSafeClientConnManager(httpParams, schemeRegistry);

HttpClient httpClient = new DefaultHttpClient(clientConnectionManager, httpParams)

HttpPost postRequest = new HttpPost(url);

postRequest.setHeader(HTTP.CONTENT_TYPE, contentType);

postRequest.setHeader(ACCEPT, contentType);

if (requestBodyString != null) {

postRequest.setEntity(new StringEntity(requestBodyString));

}

return httpClient.execute(postRequest, responseHandler);

回答:

HttpClient的默认行为符合HTTP规范(RFC 2616)的要求

10.3.3找到302

...

如果响应请求而接收到302状态代码,则其他

而不是GET或HEAD,用户代理不得自动重定向

请求,除非用户可以确认,否则可能会

更改发出请求的条件。

您可以通过子类化DefaultRedirectStrategy并覆盖其#isRedirected()方法来覆盖HttpClient的默认行为。

以上是 处理HttpClient重定向 的全部内容, 来源链接: utcz.com/qa/421786.html

回到顶部