gpt4 book ai didi

http - 在 Go 中发送未编码的 GET 请求

转载 作者:行者123 更新时间:2023-12-01 20:08:16 26 4
gpt4 key购买 nike

我需要发送 未编码 对不符合规范的 API 的 GET 请求。目标 API 不接受编码的 URL,我只能按原样发送请求,而无需任何查询编码。默认 net/http对请求进行编码。我试过这个:

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)
我尝试构建自己的 Request和操纵 RawQuery , 没有成功。我不断收到一个错误的请求,而如果我通过 Postman 发送相同的请求,一切都很好。
编辑:这就是我尝试自己设置 URL 的方法,如果我打印它,我可以看到它没有编码。我得到的错误是: 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)

最佳答案

创建请求时指定协议(protocol)和主机。设置URL.Opaque到所需的请求 URI:

req, _ := http.NewRequest("GET", "https://api.website.com/", nil)
req.URL.Opaque = `/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)
Run it on the playground .

关于http - 在 Go 中发送未编码的 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63382118/

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