2016-04-25 91 views
1

我使用apache httpclient向网站发送一些请求,该站点检查servlet请求的主机名。 它检查主机是这样的:如何在httpclient中设置请求主机名

String hostName = request.getRemoteHost(); 

,当我发送一个请求,主机名总是我的IP地址,而不是我的主机名。 我的发送请求代码是这样的:

HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); 
List<Header> headerList = new ArrayList<>(); 
headerList.add(new BasicHeader("Host","myCustomHostName")); 
HttpClientBuilder client = httpClientBuilder.build(); 
HttpGet request = new HttpGet("http://siteaddress:8080/getHostname"); 
request.setHeader(new BasicHeader("Host","myCustomHostnameAgain.just.for.try")); 
client.execute(request); 

但它不起作用。

如何在httpclient中设置请求主机名? thx。

回答

0

request.getRemoteHost()不使用来自HTTP请求的头文件。相反,它正在执行reverse DNS lookup。基本上它需要从请求中获得的IP,并尝试从DNS信息中查找。该信息可能不存在,在这种情况下,该呼叫以字符串形式返回IP地址。

+0

非常感谢。所以得到主机名的正确方法是使用http头? –

相关问题