首頁 >後端開發 >Golang >在 Go 中從 HTTP 回應正文解碼 XML 時,為什麼會收到 EOF 錯誤?

在 Go 中從 HTTP 回應正文解碼 XML 時,為什麼會收到 EOF 錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-29 09:04:30610瀏覽

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

xml.NewDecoder(resp.Body).Decode 在Go 中給出EOF 錯誤

當嘗試使用以下命令從HTTP 回應正文中解碼XML 時xml.NewDecoder,您可能會遇到「EOF」錯誤。這種情況通常發生在您之前使用過回應正文,導致後續嘗試解碼 XML 時無法使用該正文。

以下是程式碼細分:

<code class="go">conts1, err := ioutil.ReadAll(resp1.Body)</code>

此程式碼讀取正文使用 ioutil.ReadAll,有效地消耗整個回應。

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

使用 ioutil.ReadAll 讀取正文後,嘗試從同一正文 (resp1.Body) 解碼 XML 將導致 EOF 錯誤,因為內容已被消耗。

解決方案:

要解決此問題,請在使用 ioutil.ReadAll 消耗響應正文之前將其儲存到變數中。這允許您從緩衝回應中解碼 XML。

<code class="go">resp1Bytes, err := ioutil.ReadAll(resp1.Body)</code>

然後,使用此緩衝響應進行解碼:

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

以上是在 Go 中從 HTTP 回應正文解碼 XML 時,為什麼會收到 EOF 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn