解决方法:
当Read在成功读取n >字节后遇到错误或EOF(文件结束)时,它返回所读取的字节数。通常,如果从输入源的末端读取返回的n = len§字节,阅读器将返回一个非零字节数n。Read可以返回err == EOF或err == nil。然后Read()应该返回(n:0, err:EOF)。调用者在考虑错误之前应该先处理返回的数据。这样做可以正确处理在读取一些字节后发生的I/O错误,同时允许EOF发生。
//ReadAll从r开始读取,直到出现错误或EOF,并返回所读取的数据。
responseByte, err := ioutil.ReadAll(resp.Body)
if err != nil {
if strings.Contains(err.Error(), "unexpected EOF") && len(responseByte) != 0 {
logrus.Printf("when read response: %s, will parse to YAML's []byte.", err.Error())
goto pars
}
return err
}
pars:
butes, err := yaml.JSONToYAML(responseByte)
fmt.Println("butes",butes)