Чтение содержимого ответа из инструментария gorilla Client.get

Я использую Gorilla Toolkit для golang для запроса веб-ресурса (GET) и хочу обработать тело ответа, но не знаю, как получить к нему доступ. Вот мой main.go

package main

import (
    "log"

    "github.com/gorilla/http"
)

func main() {
    url := "http://ubuntu.com"

    status, h, r, err := http.DefaultClient.Get(url, nil)
    if err != nil {
        log.Fatal(err)
    }
    if r != nil {
        defer r.Close()
    }
    log.Printf("Status: %v", status)
    log.Printf("Headers: %v", h)

    var p []byte
    _, err = r.Read(p)
    if err != nil {
        log.Fatal(err)
    }
    log.Printf("MSG: %v", p)
} 

Объект ответа Gorillas имеет тип io.ReadCloser, и я не могу понять, как получить к нему доступ. Любая помощь приветствуется.


person perelin    schedule 18.07.2016    source источник


Ответы (1)


Используйте ioutil.ReadAll, чтобы прочитать все тело ответа в виде [] байта:

status, h, r, err := http.DefaultClient.Get(url, nil)
if err != nil {
    log.Fatal(err)
}
var p []byte
if r != nil {
    p, err = ioutil.ReadAll(r)
    r.Close()
    if err != nil {
        log.Fatal(err)
    }
}

Я предлагаю вам использовать https://godoc.org/net/http#Client вместо клиента Gorilla. Есть больше примеров того, как лучше использовать клиент net/http и клиент net/http.

person Cerise Limón    schedule 18.07.2016