gpt4 book ai didi

rest - 在参数中添加数组时 HTTP GET 失败,但使用 postman 会成功

转载 作者:行者123 更新时间:2023-12-01 22:39:43 25 4
gpt4 key购买 nike

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

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

当我使用 postman 进行 GET 时,我可以得到一个成功的状态码:Success 200

但是当我使用 Go 执行此操作时,我收到一个状态码:502 Bad request
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

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

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

所以,我知道问题出在哪里,但不知道如何解决,我不拥有 API,所以我无法更改它。

似乎 postman 正在做一些事情,或者我的代码和 postman 请求之间应该有什么区别?

最佳答案

最好不要手动构建 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)

关于rest - 在参数中添加数组时 HTTP GET 失败,但使用 postman 会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58752851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com