处理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