[英]Concurrent requests via Apache Http Client (and java.util.concurrent) seem to finish correctly but crash my OS
[英]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.