首頁 > 後端開發 > Golang > 主體

為什麼在 Golang 中解碼 XML 時出現 EOF 錯誤?

Patricia Arquette
發布: 2024-10-30 03:28:02
原創
448 人瀏覽過

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

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

在Golang 中從HTTP 回應正文中解碼XML 可能會導致意外的「EOF」錯誤。經調查,發現響應體已經被讀取過一次,導致其他函數無法再次讀取它。

問題:

程式碼片段包含一行使用 ioutil.ReadAll(resp1.Body) 將回應正文讀入字串變數。此步驟消耗了回應正文內容,使其無法用於後續讀取。

解決方案:

要解決此問題,應修改程式碼以確保回應body 不會被多次讀取。這可以透過直接在回應正文上使用 xml.Unmarshal 函數來實現,而無需先將其讀入字串變數。

更正的程式碼:

<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>
登入後複製

透過消除了ioutil.ReadAll(resp1.Body) 行,程式碼可以成功解碼回應正文中的XML 內容,而不會遇到EOF 錯誤。需要注意的是,回應正文是一個 io.ReadCloser,使用後應使用 defer resp1.Body.Close() 行將其關閉,以釋放任何系統資源。

以上是為什麼在 Golang 中解碼 XML 時出現 EOF 錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!