2014-12-13 142 views
0

我正在使用Apache HTTP客戶端庫發送HTTP請求。我有以下問題:通過Apache HTTP客戶端庫獲得Java HTTP請求

1-此庫是否將任何默認標頭附加到請求中,或者您必須自己附加所有標頭。

HttpClient client = new HttpClient();; 
HttGet request = new HttpGet('http://www.example.com'); 

//Now Can i execute the request directly or do i need to 
//add headers before executing the request 

client.execute(request); 

2-我還希望看到正在發送到服務器的標頭。我試過「request.getHeaders()」,但它只是打印 - 「[Lorg.apache.http.Header; @ 1bc2616」。我如何獲得它以名稱 - 值格式打印標題。

回答

0

你使用的是什麼版本的Apache HttpClient?在版本4.0.1中有一個方法HttpGet#getAllHeaders(),它返回一個Header對象的數組。看到這裏grep的代碼 - http://grepcode.com/file/repo1.maven.org/maven2/org.apache.httpcomponents/httpcore/4.0.1/org/apache/http/message/AbstractHttpMessage.java#AbstractHttpMessage.getAllHeaders%28%29

我試圖運行此代碼:

final HttpClient client = new DefaultHttpClient(); 
final HttpGet get = new HttpGet("http://www.google.com"); 

client.execute(get); 
for (final Header header : get.getAllHeaders()) { 
    System.out.println("Header: " + header.getName() + " = " + header.getValue()); 
} 
System.out.println(get.getAllHeaders().length); 

我沒有看到任何頭越來越印在控制檯和get.getAllHeaders()返回長度爲零(0)。所以我會假設HttpClient不提供任何默認的頭文件。

0

我不會推薦使用單獨的HttpGet/HttpPost/HttpPut 而是HttpRequest接口。你可以將Header/body設置爲HttpEntity。 但默認標頭已附加: 方法:默認情況下爲GET/POST/PUT; 你應該單獨設置內容類型和編碼

相關問題