我有一個包含數組的 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)
- 1 回答
- 0 關注
- 187 瀏覽
添加回答
舉報
0/150
提交
取消