错误:用于读取 Post 请求的 XML 正文的 EOF

error: EOF当我阅读 XML 响应正文时,我正在进入控制台。


下面是我的代码。


resp, err := http.Post(url, "application/xml", payload)

if err != nil {

    response.WriteErrorString(http.StatusInternalServerError, err.Error())

    return

}


defer resp.Body.Close()

dec := xml.NewDecoder(resp.Body)


if debug == true {

    body, err := ioutil.ReadAll(resp.Body)

    fmt.Println("=========== Response ==================")

    if err != nil {

        fmt.Printf("error: %v", err)

        return

    }

    fmt.Println(string(body))

    fmt.Println("=========== Response Ends =============")

}


err = dec.Decode(respStruct)

我怀疑ioutil.ReadAll没有按预期工作。


是否有原因引发此错误?


喵喔喔
浏览 449回答 1
1回答

慕虎7371278

xml.NewDecoder(resp.Body)可能已经阅读了 resp.Body 的内容。因此EOF消息。你可以在“ xml.NewDecoder(resp.Body).DecodeGiving EOFError ”中看到同样的错误读取第resp.Body一个,并使用字符串 withxml.Unmarshal将避免双重读取和错误消息。注意:类似的答案表明最佳实践仍然是使用xml.Decoder而不是xml.Unmarshal从流中读取。因此,请确保您不要阅读resp.Body两次,它会起作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go