簡體   English   中英

通過Apache HTTP客戶端庫發出的Java HTTP請求

[英]Java HTTP Requests via Apache HTTP Client Library

我正在使用Apache HTTP客戶端庫發送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”。 如何獲得以名稱-值格式打印標題的信息。

您正在使用哪個版本的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()。length返回零(0)。 因此,我假設HttpClient不提供任何默認標頭。

我不建議使用單獨的HttpGet / HttpPost / HttpPut,而是使用HttpRequest接口。 在那里,您可以將Header / body設置為HttpEntity。 但是附加了Default標頭:方法:默認情況下為GET / POST / PUT; 您應該分別設置Content-Type和Encoding

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM