client.Do("POST", "example.com", body)有沒有辦法在接收/關閉整個響應正文之前執行并讀取響應標頭?這類似于 JavaScript XHR 請求發出一個事件,表明已收到標頭,您可以在請求的其余部分到達之前讀取它們。我想要完成的是創建一種“智能客戶端”,它使用服務器標頭中的信息來確定在請求正文中上傳的內容。因此,我需要啟動請求,讀取響應標頭,然后開始寫入請求正文。由于我的系統的性質,我無法將其拆分為不同的請求。我相信在協議級別是可能的,但我不確定go的http庫是否支持它。
2 回答

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
http 客戶端 Do 函數在返回整個響應正文之前不會阻塞。如果您不想閱讀完整的響應,為什么不在檢查標題后使用 res.Body.Close() 呢?我認為如果你想要大致相同的行為,它應該有效。據醫生說。
當讀取 Body 字段時,響應正文將按需流式傳輸。如果網絡連接失敗或服務器終止響應,Body.Read 調用將返回錯誤。
盡管默認 http.Client 的 DefaultTransport(即 http.Transport)并不保證在您指定之前它不會讀取任何字節。

RISEBY
TA貢獻1856條經驗 獲得超5個贊
OPTIONS
您可以通過在發送實際請求之前向 url發送請求并讀取響應標頭來滿足您的要求。
響應標頭將包含執行首選請求所需的所有標頭。
req, _ := http.NewRequest("OPTIONS", "example.com", nil) resp, _ := client.Do(req)
- 2 回答
- 0 關注
- 186 瀏覽
添加回答
舉報
0/150
提交
取消