Erreur : xml.NewDecoder(resp.Body).Decode donnant une erreur EOF dans Golang
Lors de la tentative de décodage XML à partir d'une réponse HTML body, vous pouvez rencontrer une erreur EOF lors de l'utilisation de xml.NewDecoder(resp.Body).Decode(&v). Cela se produit lorsque le contenu du corps a déjà été lu une fois.
Solution
La clé pour résoudre ce problème réside dans la compréhension de la nature du contenu du corps. Dans le code fourni, le contenu du corps est d'abord lu et stocké dans une variable chaîne à l'aide de ioutil.ReadAll (resp1.Body). Cependant, une fois le contenu lu, il ne peut pas être relu par une autre fonction, telle que xml.NewDecoder(resp1.Body).Decode(&v). Cela entraîne l'erreur EOF.
La solution la plus pratique consiste à utiliser le contenu du corps plusieurs fois. Une façon d'y parvenir consiste à utiliser la fonction xml.Unmarshal, qui vous permet de décoder le XML à partir d'un tableau d'octets. Par conséquent, au lieu d'utiliser xml.NewDecoder(resp1.Body).Decode(&v), vous pouvez utiliser le code suivant :
<code class="go">err = xml.Unmarshal([]byte(conts1), &v) if err != nil { fmt.Printf("error is here: %v", err) return }</code>
Cette approche vous permet de lire et de décoder le contenu du corps plusieurs fois sans rencontrer l'erreur EOF.
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!