从gorilla工具包Client.get中读取响应内容

时间:2016-07-18 20:47:05

标签: go gorilla

我使用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,我无法理解如何访问它。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

使用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)
    }
}

我建议您使用net/http client代替Gorilla客户端。有更多关于如何更好地维护net / http客户端和net / http客户端的示例。