오류: xml.NewDecoder(resp.Body).Decode가 Golang에서 EOF 오류를 발생시킴
HTML 응답에서 XML을 디코딩하려고 할 때 body의 경우 xml.NewDecoder(resp.Body).Decode(&v)를 사용할 때 EOF 오류가 발생할 수 있습니다. 본문 내용을 이미 한 번 읽은 경우에 발생합니다.
해결 방법
이 문제를 해결하는 열쇠는 본문 내용의 성격을 이해하는 데 있습니다. 제공된 코드에서는 먼저 본문 내용을 읽고 ioutil.ReadAll(resp1.Body)을 사용하여 문자열 변수에 저장합니다. 그러나 일단 내용을 읽은 후에는 xml.NewDecoder(resp1.Body).Decode(&v)와 같은 다른 함수로 다시 읽을 수 없습니다. 이로 인해 EOF 오류가 발생합니다.
가장 편리한 해결 방법은 본문 콘텐츠를 여러 번 사용하는 것입니다. 이를 달성하는 한 가지 방법은 바이트 배열에서 XML을 디코딩할 수 있는 xml.Unmarshal 함수를 사용하는 것입니다. 따라서 xml.NewDecoder(resp1.Body).Decode(&v)를 사용하는 대신 다음 코드를 사용할 수 있습니다.
<code class="go">err = xml.Unmarshal([]byte(conts1), &v) if err != nil { fmt.Printf("error is here: %v", err) return }</code>
이 접근 방식을 사용하면 본문 내용을 여러 번 읽고 디코딩할 수 있습니다. EOF 오류입니다.
위 내용은 Golang의 HTML 응답 본문에서 XML을 디코딩할 때 \"EOF 오류\"를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!