2 回答

TA貢獻1830條經(jīng)驗 獲得超9個贊
如果您知道需要從響應(yīng)中讀取多少內(nèi)容,則可以使用 LimitReader ( https://golang.org/pkg/io/#LimitedReader ),否則,最簡單的方法是進行讀?。ɑ驋呙鑳x) 消耗你的身體,直到你完成你的模式。

TA貢獻1799條經(jīng)驗 獲得超8個贊
不要使用ReadAll,只需讀取一個你知道足夠大的塊來捕獲你想要的請求部分
// response must be in the first 2048 bytes
buf := make([]byte, 2048)
n, err := resp.Body.Read(buf)
MyFunction(buf[:n])
或通過 io.LimitedReader
buf, err := ioutil.ReadAll(io.LimitReader(resp.Body, 2048))
或者,如果您真的需要通過行閱讀, bufio.Scanner
scanner := bufio.NewScanner(resp.Body)
for i := 0; i < fewLines && scanner.Scan(); i++ {
MyFunction(scanner.Bytes())
}
但是請注意,如果您沒有讀完響應(yīng)正文,它將阻止您的客戶端重用連接,并且如果有大量傳入數(shù)據(jù),服務(wù)器可能不喜歡您經(jīng)常提前關(guān)閉連接。
- 2 回答
- 0 關(guān)注
- 238 瀏覽
添加回答
舉報