2016-07-18 4 views
0

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

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

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

ответ

3

Использование 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 вместо клиента гориллы. Существует больше примеров того, как лучше использовать клиента net/http и клиента net/http.