Maison > développement back-end > Golang > le corps du texte

Pourquoi est-ce que j'obtiens une erreur EOF lors du décodage XML dans Golang ?

Patricia Arquette
Libérer: 2024-10-30 03:28:02
original
448 Les gens l'ont consulté

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

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

Le décodage XML d'un corps de réponse HTTP dans Golang peut entraîner dans une erreur "EOF" inattendue. Après enquête, il a été découvert que le corps de la réponse avait déjà été lu une fois, empêchant une autre fonction de le relire.

Problème :

L'extrait de code comprenait une ligne qui utilisait ioutil.ReadAll(resp1.Body) pour lire le corps de la réponse dans une variable chaîne. Cette étape a consommé le contenu du corps de la réponse, le rendant indisponible pour les lectures ultérieures.

Solution :

Pour résoudre ce problème, le code doit être modifié pour garantir que la réponse le corps n'est pas lu plusieurs fois. Ceci peut être réalisé en utilisant la fonction xml.Unmarshal directement sur le corps de la réponse sans le lire au préalable dans une variable de chaîne.

Code corrigé :

<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>
Copier après la connexion

Par en éliminant la ligne ioutil.ReadAll(resp1.Body), le code peut décoder avec succès le contenu XML du corps de la réponse sans rencontrer l'erreur EOF. Il est important de noter que le corps de la réponse est un io.ReadCloser, qui doit être fermé après utilisation à l'aide de la ligne defer resp1.Body.Close() pour libérer toutes les ressources système.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!