当前位置: 首页 > 面试题库 >

xml.NewDecoder(resp.Body)。给出EOF错误_GOLang的解码

弘烨烁
2023-03-14
问题内容

我正在尝试从HTML响应正文中解码XML。

=>我将此响应主体作为字符串保存到变量中,并使用xml.Unmarshal Function .Code成功解码:

    err = xml.Unmarshal([]byte(outs), &v)
       if err != nil {
    fmt.Printf("error is here: %v", err)
    return
                       }

因此,我认为问题不是响应正文的实际内容。

现在我的实际代码:

req1, err := http.NewRequest("GET", concat([]string{domain, defects_link}), nil)
error_handler(err)
req1.Close = true //I tried with and without this line

resp1, err := client.Do(req1)
error_handler(err)

fmt.Printf("\n %s \n", resp1.Status)

defer resp1.Body.Close()//I tried with and without this line
conts1, err := ioutil.ReadAll(resp1.Body)
error_handler(err)
fmt.Println("Response Body is Here :", string(conts1))//Contents are Printed Here

响应打印在上面的代码的最后一行。但是下面的代码给出了“ Error:EOF”

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

    return
}

我的代码有什么问题。请帮助


问题答案:

如果您已经读过Body io.ReadCloser一次(带有conts1, err := ioutil.ReadAll(resp1.Body)),则不能要求另一个函数再次读取它(否则您将收到EOF错误消息)。

我将此响应主体作为字符串保存到变量中,并使用xml.Unmarshal函数成功解码。

这似乎是多次使用身体内容的最简单方法



 类似资料:
  • 我分享的链接geeksforgeeks ide我写的代码https://ide.geeksforgeeks.org/ 在上面的代码中不断获得EO费罗尔 l=[list(map(int,input())] 视场误差:读取一行时的视场误差

  • 为什么当我添加一个语义谓词(虽然这里是一个虚拟谓词)作为替代选项时,它总是说“第1行:5在输入' '处没有可行的替代选项”?如果我删除带有false语义谓词的替代选项,错误就会像预期的那样消失。 PS:我使用的是antlr-4.0-complete.jar

  • 问题内容: 我想从字符串中删除最后一次出现的“ \”这个特殊字符。我尝试了像这样的字符串函数 但是每次遇到错误时,我都要求加一个额外的报价。同时我发现(“ \”“)用来传递”这个特殊字符。我该如何进行? 问题答案: 您需要使用 字符串中的字符转义特殊字符(依此类推)。因此,在它们之前使用a 会使它成为 文字 ,这意味着java会将其后的内容视为常规字符。 你可以测试看看 将打印。它会打印。 所以:

  • 我试图将SOAP消息发送到另一个web服务,但是我得到的响应抛出一个错误:“无法创建SOAP消息,原因是异常:XML reader错误:com.ctc.wstx.exc.wstxeofException:Prolog中的意外EOF”。 web服务用Java编写,客户端用VB.NET编写。

  • 我在运行下面我写的SPARK代码时出错了。我试图根据键找到所有向量的总和。每个输入行以键(整数)开始,然后是127个浮点数,这是一个具有127个维度的单个向量,即每一行以键和向量开始。

  • 问题内容: 我在我的应用程序的servlet中使用以下代码 当我运行应用程序并调用servlet时,出现以下错误 我已经在Java版本为JDK 1.6.20的Linux机器上托管了该应用程序。 是什么原因引起的问题… 是编写代码的类,是在上述类中调用方法的servlet … 问题答案: 要在服务器端应用程序中使用AWT类,我相信您需要在“无头”模式下运行。将servlet容器的启动更改为包括: (