在從伺服器下載檔案並將其傳回給使用者的程式中,保持連線完整性至關重要。當使用者停止下載或終止連線時,GET 連線也應該終止。但是,透過使用情況圖表觀察到,這種情況並未發生。
要解決此問題,必須在所有情況下關閉請求正文。操作方法如下:
<code class="go">resp, httpErr := http.Get(url.String()) if httpErr != nil { // Handle error return } // If there's no error, defer the call for closing the body defer resp.Body.Close()</code>
延遲 Body 的關閉可以確保即使發生錯誤它也會被執行。此外,io.Copy 還提供有關複製操作成功的資訊。您可以使用以下程式碼來檢查這一點:
<code class="go">written, err := io.Copy(w, resp.Body) if err != nil { // Copy did not succeed }</code>
透過優雅地關閉連線並檢查 io.Copy 的結果,您可以確保在使用者關閉下載或連線時終止 HTTP 連線.
以上是以下是一些適合問答格式的標題選項: * **為什麼當使用者終止下載時我的 Go HTTP 連線沒有關閉? * **如何優雅地關閉 HTTP 連接的詳細內容。更多資訊請關注PHP中文網其他相關文章!