은 대부분 좋은입니다. 그것을 향상시키는 몇 가지 사항 :
http.Get()
은 http.Response
과 선택 사항 오류를 반환합니다. 오류가 없다면 이는 HTTP GET 조작이 성공했음을 의미하지만 서버가 오류 문서로 응답했을 수 있습니다. 따라서 응답 HTTP 상태 코드를 확인해야합니다.
또한 io.ReadAll()
도 너무 있는지 확인하는 것을 잊지 마세요 (읽기 데이터 외에) 오류를 반환합니다.
의 함수에 포장 보자
func getXML(url string) (string, error) {
resp, err := http.Get(url)
if err != nil {
return "", fmt.Errorf("GET error: %v", err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
return "", fmt.Errorf("Status error: %v", resp.StatusCode)
}
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return "", fmt.Errorf("Read body: %v", err)
}
return string(data), nil
}
테스트/위의 함수 사용 :
if xmlStr, err := getXML("http://somehost.com/some.xml"); err != nil {
log.Printf("Failed to get XML: %v", err)
} else {
log.Println("Received XML:")
log.Println(xmlStr)
}
는 또한 다른 응답의 내용을 얻을 같은 것이라고주의를, 그래서 string
변환 및 반환 유형을 "인코딩"하지 않는 것이 좋습니다. 이 사람은 더 일반적이다 :
if data, err := getContent("http://somehost.com/some.xml"); err != nil {
log.Printf("Failed to get XML: %v", err)
} else {
log.Println("Received XML:")
log.Println(string(data))
}
는 상세 reponse 주셔서 감사합니다 :
가 XML 문서를 얻기 위해 이것을 사용! 그것은 정말로 나의 날을 구했다. 나는 너무 적은 평판 때문에 대답을 업 그레이션 할 수 없었습니다 - 미안 해요! – leandermelms