2 回答
TA贡献1824条经验 获得超8个赞
您正在创建一个带有 nil 正文的新 GET 请求。请参阅 http.NewRequest 的函数签名
func NewRequest(method, url string, body io.Reader) (*Request, error)
因此,当您访问 resp.Body 时,它当然会为零。
此外,http.NewRequest 只是返回一个请求,它实际上并没有执行它。
要使用您的请求实际发出 GET 请求,您需要将其传递给 http 客户端的Do
方法。像这样:
response, err := http.DefaultClient.Do(resp)
编辑:我还要补充一点,将您的请求命名resp
为令人困惑。我建议将变量重命名为req
或request
TA贡献2019条经验 获得超9个赞
此代码将解决您的问题。
client := &http.Client{}
apiURL := "https://api.github.com/repos/octocat/Hello-World/pulls/1347"
req, err := http.NewRequest("GET", apiURL, nil)
if err != nil {
check(err)
}
req.Header.Add("Accept", "application/vnd.github.v3.patch")
response, err := client.Do(req)
if err != nil {
check(err)
}
defer response.Body.Close()
contents, err := ioutil.ReadAll(response.Body)
if err != nil {
check(err)
}
ctxt.JSON(http.StatusOK, string(contents))
- 2 回答
- 0 关注
- 117 浏览
添加回答
举报