亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從另一個請求返回正文

如何從另一個請求返回正文

Go
瀟湘沐 2022-04-20 19:28:50
req, err := http.NewRequest("GET", "https://api.github.com/repos/octocat/Hello-World/pulls/1347", nil)req.Header.Set("Accept", "application/vnd.github.v3.patch")if err != nil {    check(err)}body, err := ioutil.ReadAll(req.Body)ctxt.JSON(http.StatusOK, body)在這里,我需要從 github api 的主體發送 api 響應。但在這里我收到以下錯誤:“運行時錯誤:無效的內存地址或 nil 指針取消引用”
查看完整描述

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為令人困惑。我建議將變量重命名為reqrequest


查看完整回答
反對 回復 2022-04-20
?
慕少森

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


查看完整回答
反對 回復 2022-04-20
  • 2 回答
  • 0 關注
  • 137 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號