Rumah > pembangunan bahagian belakang > Golang > Mengapa Saya Mendapat Ralat EOF Semasa Menyahkod XML di Golang?

Mengapa Saya Mendapat Ralat EOF Semasa Menyahkod XML di Golang?

Patricia Arquette
Lepaskan: 2024-10-30 03:28:02
asal
555 orang telah melayarinya

Why Am I Getting an EOF Error When Decoding XML in Golang?

xml.NewDecoder(resp.Body).Decode Memberi EOF Ralat di Golang

Menyahkod XML daripada badan tindak balas HTTP di Golang boleh menghasilkan dalam ralat "EOF" yang tidak dijangka. Setelah disiasat, didapati bahawa badan respons telah dibaca sekali, menghalang fungsi lain daripada membacanya semula.

Isu:

Coretan kod termasuk baris yang menggunakan ioutil.ReadAll(resp1.Body) untuk membaca badan tindak balas ke dalam pembolehubah rentetan. Langkah ini menggunakan kandungan badan respons, menjadikannya tidak tersedia untuk bacaan seterusnya.

Penyelesaian:

Untuk menangani isu ini, kod tersebut harus diubah suai untuk memastikan respons badan tidak dibaca beberapa kali. Ini boleh dicapai dengan menggunakan fungsi xml.Unmarshal terus pada badan tindak balas tanpa membacanya terlebih dahulu ke dalam pembolehubah rentetan.

Kod Dibetulkan:

<code class="go">resp1, err := client.Do(req1)
error_handler(err)

if err := xml.NewDecoder(resp1.Body).Decode(&v); err != nil {
    fmt.Printf("error is : %v", err)
    return
}</code>
Salin selepas log masuk

Oleh menghapuskan baris ioutil.ReadAll(resp1.Body), kod tersebut boleh berjaya menyahkod kandungan XML daripada badan tindak balas tanpa menghadapi ralat EOF. Adalah penting untuk ambil perhatian bahawa badan tindak balas ialah io.ReadCloser, yang harus ditutup selepas digunakan menggunakan baris defer resp1.Body.Close() untuk melepaskan sebarang sumber sistem.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat EOF Semasa Menyahkod XML di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan