首頁 > 後端開發 > Golang > 為什麼連續的 Golang HTTP 請求會導致意外的 EOF 錯誤?

為什麼連續的 Golang HTTP 請求會導致意外的 EOF 錯誤?

DDD
發布: 2024-12-15 22:15:13
原創
567 人瀏覽過

Why Do Successive Golang HTTP Requests Result in Unexpected EOF Errors?

連續呼叫期間Golang HTTP 請求中出現意外的EOF 錯誤

嘗試解決使用標準net/http 套件時遇到的異常錯誤,使用者在發出多個HTTP 請求時報告間歇性EOF(檔案結束)異常

使用者提供的程式碼片段包含GET和PUT請求的測試函數,執行過程中偶發錯誤。

問題排查

分析程式碼後發現根本原因與請求處理不當有關。具體來說,Req.Close 欄位未明確設定為 true。

在提供的程式碼中,使用 defer resp.Body.Close() 語法來處理回應正文關閉。然而,這被證明是不夠的,並且需要將 Req.Close 設為 true 以確保正確的請求處理。

更新的程式碼

以下程式碼片段示範如何正確設定Req.Close:

client := &http.Client{}
req, err := http.NewRequest(method, url, httpBody)

// **NOTE** this !!
req.Close = true

req.Header.Set("Content-Type", "application/json")
req.SetBasicAuth("user", "pass")
resp, err := client.Do(req)
if err != nil {
    // whatever
}
defer resp.Body.Close()

response, err = ioutil.ReadAll(resp.Body)
if err != nil {
    // Whatever
}
登入後複製

將Req.Close設為true可以有效保證HTTP請求正確關閉,防止EOF錯誤。透過實施此更改,使用者的測試函數在發出多個請求時始終通過,解決了問題。

以上是為什麼連續的 Golang HTTP 請求會導致意外的 EOF 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板