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

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

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