In einem Programm, das eine Datei von einem Server herunterlädt und an den Benutzer zurückgibt, ist es von entscheidender Bedeutung, die Verbindungsintegrität aufrechtzuerhalten. Wenn der Benutzer den Download stoppt oder die Verbindung beendet, sollte auch die GET-Verbindung beendet werden. Wie aus der Nutzungsgrafik hervorgeht, tritt dies jedoch nicht auf.
Um dieses Problem zu beheben, ist es unter allen Umständen wichtig, den Hauptteil der Anfrage zu schließen. So geht's:
<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>
Durch das Verzögern des Schließens des Body wird sichergestellt, dass er auch dann ausgeführt wird, wenn ein Fehler auftritt. Darüber hinaus liefert io.Copy Informationen über den Erfolg des Kopiervorgangs. Sie können dies überprüfen, indem Sie den folgenden Code verwenden:
<code class="go">written, err := io.Copy(w, resp.Body) if err != nil { // Copy did not succeed }</code>
Indem Sie die Verbindung ordnungsgemäß schließen und das Ergebnis von io.Copy überprüfen, können Sie sicherstellen, dass die HTTP-Verbindung beendet wird, wenn der Benutzer den Download oder die Verbindung schließt .
Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die zum Frage-und-Antwort-Format passen: * **Warum wird meine Go-HTTP-Verbindung nicht geschlossen, wenn der Benutzer den Download abbricht?** * **Wie schließe ich HTTP Connecti ordnungsgemäß?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!