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 关注
- 135 浏览
添加回答
举报