2016-04-25 61 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頭? –

相關問題