如何在httpclient

时间:2016-04-25 01:42:28

标签: java httpclient

我使用apache httpclient向网站发送一些请求,该网站检查servlet请求主机名。 它会像这样检查主机名:

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。

1 个答案:

答案 0 :(得分:1)

request.getRemoteHost()不使用HTTP请求中的标头。相反,它正在做reverse DNS lookup。基本上,它从请求中获取IP并尝试从DNS信息中查找。有可能该信息不存在,在这种情况下,调用将IP地址作为字符串返回。