HTTPGET在param中添加数组时失败,但使用poster会成功



我有一个包含数组的URL。当我打印URL时,我得到:

https://myurl.com?args=["2019-11-06T19:20:00Z", "2019-11-06T22:30:00Z"]

当我与邮递员进行GET时,我可以获得一个成功的状态代码:成功200

但当我使用Go时,我收到一个状态代码:502错误请求

client := http.Client{}
token := GetJWTToken()
bearer := "Bearer " + token
url := "https://myurl.com?args=[" + start.Format(time.RFC3339) + ", " + end.Format(time.RFC3339) + "]"
req, err := http.NewRequest("GET", url, nil)
if req != nil {
req.Header.Add("Authorization", bearer)
req.Header.Set("Content-Type", "application/json")
}
resp, err := client.Do(req)
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
bodyString := string(bodyBytes)
log.Info(bodyString) // Prints 502 Bad Gateway

我打印了两个URL,它们完全相同。

我试图删除url中的"数组",但显然失败了,因为API需要这个参数,但它可以到达API。

所以,我知道问题在哪里,但不知道如何解决它,我没有API,所以我不能改变它

邮递员似乎在暗中做什么,或者我的代码和邮递员的请求之间有什么区别?

最好不要手动构建URL。使用正确的工具:

addr, _ := url.Parse("https://myurl.com")
query := url.Values{}
query.Add("args", "[" + start.Format(time.RFC3339) + ", " + end.Format(time.RFC3339) + "]")
addr.RawQuery = query.Encode()
req, err := http.NewRequest("GET", addr.String(), nil)

最新更新