我使用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。
答案 0 :(得分:1)
request.getRemoteHost()不使用HTTP请求中的标头。相反,它正在做reverse DNS lookup。基本上,它从请求中获取IP并尝试从DNS信息中查找。有可能该信息不存在,在这种情况下,调用将IP地址作为字符串返回。