Maison > développement back-end > Golang > Pourquoi est-ce que je reçois une erreur EOF lors du décodage XML à partir d'un corps de réponse HTTP dans Go ?

Pourquoi est-ce que je reçois une erreur EOF lors du décodage XML à partir d'un corps de réponse HTTP dans Go ?

Linda Hamilton
Libérer: 2024-10-29 09:04:30
original
687 Les gens l'ont consulté

Why am I getting an EOF error when decoding XML from an HTTP response body in Go?

xml.NewDecoder(resp.Body).Decode donnant une erreur EOF dans Go

Lorsque vous essayez de décoder le XML à partir du corps de la réponse HTTP à l'aide xml.NewDecoder, vous pouvez rencontrer une erreur « EOF ». Cela se produit généralement lorsque vous avez déjà consommé le corps de la réponse, le rendant indisponible pour les tentatives ultérieures de décodage du XML.

Voici une ventilation de votre code :

<code class="go">conts1, err := ioutil.ReadAll(resp1.Body)</code>
Copier après la connexion

Ce code lit le corps en utilisant ioutil.ReadAll, consommant efficacement la totalité de la réponse.

<code class="go">if err := xml.NewDecoder(resp1.Body).Decode(&v); err != nil {
    fmt.Printf("error is : %v", err)</code>
Copier après la connexion

Après avoir lu le corps avec ioutil.ReadAll, essayer de décoder le XML à partir du même corps (resp1.Body) entraînera une erreur EOF car le le contenu a déjà été consommé.

Solution :

Pour résoudre ce problème, stockez le corps de la réponse dans une variable avant de le consommer à l'aide d'ioutil.ReadAll. Cela vous permet de décoder le XML à partir de la réponse mise en mémoire tampon.

<code class="go">resp1Bytes, err := ioutil.ReadAll(resp1.Body)</code>
Copier après la connexion

Ensuite, utilisez cette réponse mise en mémoire tampon pour le décodage :

<code class="go">if err := xml.NewDecoder(bytes.NewReader(resp1Bytes)).Decode(&v); err != nil {
    fmt.Printf("error is : %v", err)
}</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal