2016-03-06 15 views
0

这里是我的方案的Apache的HttpClient 4.5跨主机重定向

我打电话从HOSTA http://www.hosta.com/something

这是重定向我到HOSTB网址 http://www.hostb.com/something

一个URL这是响应代码,我从网址获取a

http-outgoing-5 < < HTTP/1.1 302暂时移动

HTTP出射-5- < <位置:www.hostb.com/something

重定向到www.hostb.com/something

HTTP出射-10 >>主机:hosta.com

在最后一行我看到主机头设置为HOSTA这是错误的。

这里是我使用

代码这是连接是如何创建的

private PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); 
HttpClientBuilder builder= HttpClients.custom(); 

builder.setMaxConnPerRoute(50) 
    .setConnectionManager(cm) 
    .setConnectionTimeToLive(timeout, TimeUnit.MILLISECONDS) 
    .setDefaultCookieStore(cookieStore) 
    .setRedirectStrategy(new LaxRedirectStrategy()) 
    .setDefaultSocketConfig(socketConfig) 
    .setServiceUnavailableRetryStrategy(retryStrategy) 
    .setKeepAliveStrategy(keepAliveStrategy) 
    .setRetryHandler(myRetryHandler); 

方法调用请求

HttpPost post = new HttpPost(url); 
post.setHeader("User-Agent", USER_AGENT); 
post.setHeader("Cache-Control", "max-age=0"); 
post.setHeader("Connection", "keep-alive"); 
post.setHeader("Content-Type", "application/x-www-form-urlencoded"); 
post.setHeader("Upgrade-Insecure-Requests", "1"); 
post.setConfig(requestConfig); 
if (origin != null) { 
    post.setHeader("Origin", origin); 
} 
if (host != null) { 
    post.setHeader("Host", host); 
} 
if (referer != null) { 
    post.setHeader("Referer", referer); 
} 
//some more code 

我使用的是自动重定向(使用LaxDirectStrategy)这工作正常。但在这个特殊情况下,我正在接受问题。

有没有什么办法在跨主机重定向的情况下更新HOST头,或者是否可以针对某个特定请求停止自动重定向?

回答

0

我使用RequestConfig来禁用/启用特定请求的重定向。

默认情况下我有重定向enabled.Whenever我想它禁用我用

RequestConfig requestConfig = RequestConfig.custom() 
      .setRedirectsEnabled(false).build();//disable redirect 
HttpPost post = new HttpPost(url); 

post.setConfig(requestConfig);//poass the request config to request 
相关问题