首页 > 后端开发 > Golang > 在 Go 中从 HTTP 响应正文解码 XML 时,为什么会收到 EOF 错误?

在 Go 中从 HTTP 响应正文解码 XML 时,为什么会收到 EOF 错误?

Linda Hamilton
发布: 2024-10-29 09:04:30
原创
653 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板