Rumah >pembangunan bahagian belakang >Golang >Mengapa Permintaan HTTP Golang Berturut-turut Menghasilkan Ralat EOF Tidak Dijangka?

Mengapa Permintaan HTTP Golang Berturut-turut Menghasilkan Ralat EOF Tidak Dijangka?

DDD
DDDasal
2024-12-15 22:15:13568semak imbas

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

Ralat EOF Tidak Dijangka dalam Permintaan HTTP Golang semasa Panggilan Berturut-turut

Dalam percubaan untuk menyelesaikan ralat luar biasa yang dihadapi semasa menggunakan pakej net/http standard , pengguna melaporkan pengecualian EOF (Akhir Fail) terputus-putus apabila membuat berbilang permintaan HTTP berturut-turut.

Coretan kod yang disediakan oleh pengguna termasuk fungsi ujian untuk permintaan GET dan PUT, di mana ralat berlaku secara sporadis semasa pelaksanaan.

Menyelesaikan Masalah

Selepas menganalisis kod tersebut, didapati punca asas berkaitan dengan pengendalian permintaan yang tidak betul. Khususnya, medan Req.Close tidak ditetapkan secara eksplisit kepada benar.

Dalam kod yang disediakan, sintaks defer resp.Body.Close() telah digunakan untuk mengendalikan penutupan badan respons. Walau bagaimanapun, ini terbukti tidak mencukupi dan menetapkan Req.Close to true diperlukan untuk memastikan pengendalian permintaan yang betul.

Kod Kemas Kini

Coretan kod berikut menunjukkan cara menetapkan dengan betul 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
}

Resolusi

Menetapkan Req.Close to true dengan berkesan menjamin permintaan HTTP ditutup dengan betul, menghalang ralat EOF daripada berlaku. Dengan melaksanakan perubahan ini, fungsi ujian pengguna lulus secara konsisten apabila membuat berbilang permintaan, menyelesaikan isu tersebut.

Atas ialah kandungan terperinci Mengapa Permintaan HTTP Golang Berturut-turut Menghasilkan Ralat EOF Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn