我需要向不符合規(guī)范的 API發(fā)送未編碼的 GET 請(qǐng)求。目標(biāo) API 不接受編碼的 URL,我只能按原樣發(fā)送請(qǐng)求,而無(wú)需任何查詢編碼。默認(rèn)情況下net/http對(duì)請(qǐng)求進(jìn)行編碼。我試過(guò)這個(gè):client := &http.Client{}req, _ := http.NewRequest("GET", `https://api.website.com/rest/v1/item/0?search=[{"key":"tag","value":"myvalue"}]`, nil)req.Header.Set("Authorization", "Bearer " + viper.GetString("ACCESS_TOKEN"))response, _ := client.Do(req)defer req.Body.Close()data, _ := ioutil.ReadAll(response.Body)fmt.Printf("%s\n", data)我試圖構(gòu)建自己的Request和操縱的RawQuery,但沒(méi)有成功。我不斷收到一個(gè)錯(cuò)誤的請(qǐng)求,而如果我通過(guò) Postman 發(fā)送相同的請(qǐng)求,一切都很好。編輯:這就是我嘗試自己設(shè)置 URL 的方法,如果我打印它,我可以看到它沒(méi)有編碼。我得到的錯(cuò)誤是:panic: runtime error: invalid memory address or nil pointer dereference。client := &http.Client{}req, _ := http.NewRequest("GET", "", nil)req.URL = &url.URL{ Host: "api.website.com", Scheme: "https", RawQuery: `/rest/v1/item/0?search=[{"key":"tag","value":"myvalue"}]`,}req.Header.Set("Authorization", "Bearer " + viper.GetString("RAINDROP_TOKEN"))res, _ := client.Do(req)defer req.Body.Close()data, _ := ioutil.ReadAll(res.Body)fmt.Printf("%s\n", data)
在 Go 中發(fā)送未編碼的 GET 請(qǐng)求
qq_花開(kāi)花謝_0
2022-06-21 17:04:36