본문 콘텐츠를 읽은 후 xml.NewDecoder()에서 XML 디코딩 오류 발생
HTTP 응답 본문에서 XML을 디코딩하려고 할 때 개발자는 다음과 같은 문제가 발생할 수 있습니다. xml.NewDecoder()에서 EOF(파일 끝) 오류가 발생합니다. 이 오류는 일반적으로 본문 콘텐츠를 이미 읽었거나 처리한 경우에 발생합니다.
제공된 코드 샘플에는 ioutil.ReadAll()을 사용하여 응답 본문을 처음 읽는 섹션이 포함되어 있습니다. 이 작업은 전체 본문 콘텐츠를 사용하므로 후속 작업에 사용할 수 없습니다. 결과적으로 xml.NewDecoder()를 사용하여 본문을 읽으면 파일 끝에 도달하여 EOF 오류가 발생합니다.
이 오류를 방지하려면 응답 본문 콘텐츠를 읽기 작업을 수행하기 전에 변수입니다. 이를 통해 xml.NewDecoder()와 같은 다른 함수가 EOF 오류를 발생시키지 않고 콘텐츠에 액세스할 수 있습니다.
샘플 코드 수정:
<code class="go">var bodyContent []byte resp1, err := client.Do(req1) error_handler(err) defer resp1.Body.Close() bodyContent, err = ioutil.ReadAll(resp1.Body) error_handler(err) resp1.Body = ioutil.NopCloser(bytes.NewBuffer(bodyContent)) if err := xml.NewDecoder(resp1.Body).Decode(&v); err != nil { fmt.Printf("error is : %v", err) return }</code>
소개하여 bodyContent 변수를 사용하고 resp1.Body를 업데이트하면 두 작업 모두에 콘텐츠를 재사용할 수 있습니다. 이 접근 방식을 사용하면 EOF 오류가 제거되고 성공적인 XML 디코딩이 가능해집니다.
위 내용은 HTTP 응답 본문을 읽은 후 `xml.NewDecoder()`에서 EOF 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!