簡體   English   中英

是否可以使用普通套接字連接發送HTTP請求並接收不帶標題的響應?

[英]Is it possible to send HTTP request using plain socket connection and receive response without headers?

專家

我正在嘗試實現一個處理HTTP協議的下載器,我能夠使用以下代碼發送HTTP請求:

StringBuilder request = new StringBuffer().append("GET ").append(uri.getPath());
if(uri.getQuery() != null)
    request.append('?').append(uri.getQuery());
request.append(" HTTP/1.1\nHost: ").append(uri.getHost()).append("\nAccept: */*\n\n");

// send the request
outputStream.write(request.toString().getBytes("utf-8"));
outputStream.flush();

收到響應后,我需要將響應的主體保存到磁盤,然后完成工作。

我的問題是:是否可以為請求設置任何HTTP標頭,這將導致服務器發送沒有HTTP標頭(僅正文)的響應?

我問這個問題的原因是,如果可能的話,在讀取響應時不需要手動跳過HTTP標頭,則可以直接開始從輸入流中讀取原始字節。 我想要的只是響應的主體,在這種情況下,HTTP標頭並不重要。

如果您不控制服務器,則可能不會。 如果這樣做,則取決於您使用服務器端的內容,您也許可以發送不帶標題的響應。

看來您使用的是Java,而且我懷疑有庫可以幫助您提取響應而不自己解析。 這比嘗試合並沒有標題的響應要好。

HTTP協議正在工作。 您總是會得到標題作為響應。 我很確定,Java在某個地方可以使用http客戶端。 我建議您使用它。

不,您將始終獲得標題。 而且,由於要嘗試檢索的資源可能采用不同的編碼和/或多個部分,因此您必須對其進行解析。

另一方面,已經通過wget(1)類的工具為您完成了此操作。 您可以只使用它們,也可以查看源代碼來找出您需要以編程方式進行的操作。

暫無
暫無

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

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