2 回答

TA貢獻1900條經驗 獲得超5個贊
添加到@larsks 的答案中,我可以看到更多錯誤
ioutil.ReadAll
已經返回一個字節數組,您可以直接將其用于解編組。json.Unmarshal(content, &resultJson)
許多錯誤會被忽略,因此即使遇到任何錯誤也不會停止執行。
我建議按如下方式更改功能:
func (c Collection) GetSales(filter, types string) []Sale {
const url = "https://api.com/"
req, err := http.NewRequest("POST", url, requestBody)
if err != nil {
panic(err)
}
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
content, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}
var resultJson Data
err = json.Unmarshal(content, &resultJson)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", resultJson)
return resultJson.Activity.Activities.Sales
}

TA貢獻1735條經驗 獲得超5個贊
您編寫的代碼不會編譯(由于幾個未定義的變量),因此很難將功能問題與語法問題區分開來。
但是,有一點很突出:您正在使用 創建一個 HTTP 請求req, err := http.NewRequest(...),但您從未使用客戶端執行該請求。請參閱文檔,其中包括此示例:
client := &http.Client{
CheckRedirect: redirectPolicyFunc,
}
resp, err := client.Get("http://example.com")
// ...
req, err := http.NewRequest("GET", "http://example.com", nil)
// ...
req.Header.Add("If-None-Match", `W/"wyzzy"`)
resp, err := client.Do(req)
// ...
如果您使用NewRequest來創建請求,則必須使用client.Do(req)來執行它。
- 2 回答
- 0 關注
- 171 瀏覽
添加回答
舉報