IT

Go에서 HTTP 응답에 노드로 액세스

lottoking 2020. 9. 9. 08:13
반응형

Go에서 HTTP 응답에 노드로 액세스


웹 요청의 응답을 구문 분석하고 싶지만 있습니다.

func main() {
    resp, err := http.Get("http://google.hu/")
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)

    ioutil.WriteFile("dump", body, 0600)

    for i:= 0; i < len(body); i++ {
        fmt.Println( body[i] ) // This logs uint8 and prints numbers
    }

    fmt.Println( reflect.TypeOf(body) )
    fmt.Println("done")
}

응답을 어디로 어떻게 액세스 할 수 있습니까? ioutil.WriteFile응답을 파일에 씁니다.

이미 패키지 참조를 확인했지만 도움이되지 않았습니다.


bs := string(body) 충분한 자격이 있어야합니다.

거기에서 일반 패키지로 사용할 수 있습니다.

이 약간에서 와 같이 조금 :

var client http.Client
resp, err := client.Get(url)
if err != nil {
    log.Fatal(err)
}
defer resp.Body.Close()

if resp.StatusCode == http.StatusOK {
    bodyBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }
    bodyString := string(bodyBytes)
    log.Info(bodyString)
}

GoByExample을 참조하십시오 .

아래에 설명되어 있고 zzn답변 에서이 변환입니다 ( spec 참조 ). zzzz가 참조 한
" 얼마나 비싸지 []byte(string)입니까? "(역 문제 참조 됨)를 참조하십시오 .

일부 변환은 uint(myIntvar)비트를 제자리에서 재 해석 하는 캐스트와 동일 합니다.

Sonia 는 다음을 추가합니다.

바이트에서는 어디에서나 만들려면 반드시 껍질을 벗기고 할당해야합니다. 불변 속성은 강제합니다.
여기에서 [] 바이트로 최대한 많은 작업을 수행 한 다음 끝에 많은 작업을 생성하여 최적화 할 수 있습니다. 유형은 종종 유용합니다.bytes.Buffer


http 본문 응답을 읽는 데 사용하는 방법은 바이트 조각을 반환합니다.

func ReadAll(r io.Reader) ([]byte, error)

공식 문서

다음 []byte을 사용하여 공유 로 변환 수 있습니다.

body, err := ioutil.ReadAll(resp.Body)
bodyString := string(body)

string (byteslice)는 도구를 사용하여 변환합니다. 아니라는 것이 아니라는 것을 알고 있습니다.

참고 URL : https://stackoverflow.com/questions/38673673/access-http-response-as-string-in-go

반응형