为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
一只萌萌小番薯 2023-07-31 17:28:08
我有一个包含数组的 URL。当我打印 URL 时,我得到:https://myurl.com?args=["2019-11-06T19:20:00Z", "2019-11-06T22:30:00Z"]当我用邮递员进行 GET 时,我可以获得成功的状态代码:Success 200但是当我用 Go 执行此操作时,我收到状态代码:502 Bad requestclient := 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,所以我无法更改它。看来邮递员正在幕后做一些事情,或者我的代码和邮递员请求之间应该有什么区别?
查看完整描述

1 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

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


查看完整回答
反对 回复 2023-07-31
  • 1 回答
  • 0 关注
  • 136 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信