gpt4 book ai didi

http - 使用基本身份验证和表单值进行 Http Post 请求

转载 作者:IT王子 更新时间:2023-10-29 01:16:26 26 4
gpt4 key购买 nike

我正在为一个 API 编写包装器。 api 使用基本身份验证,然后 POST 请求需要 PostForm 值。我正在做这样的事情:

func NewFoo(name string) string {
client := &http.Client{}
URL := HOST + "foo/"
req, err := http.NewRequest("POST", URL, nil)
v := url.Values{}
v.Set("name", name)
req.Form = v
req.SetBasicAuth(EMAIL, PASSWORD)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
s := string(bodyText)
return s
}

我有一个类似的 GET 请求,没有表单值,但它有效。当我运行它时,它告诉我需要“名称”值。 (所以它没有得到它)​​

为什么这不起作用?

最佳答案

来自 http://golang.org/pkg/net/http/#Request

// Form contains the parsed form data, including both the URL
// field's query parameters and the POST or PUT form data.
// This field is only available after ParseForm is called.
// The HTTP client ignores Form and uses Body instead.
Form url.Values

您必须将您的 url.Values 传递给请求的主体。

func NewFoo(name string) string {
client := &http.Client{}
URL := HOST + "foo/"
v := url.Values{}
v.Set("name", name)
//pass the values to the request's body
req, err := http.NewRequest("POST", URL, strings.NewReader(v.Encode()))
req.SetBasicAuth(EMAIL, PASSWORD)
resp, err := client.Do(req)
if err != nil {
log.Fatal(err)
}
bodyText, err := ioutil.ReadAll(resp.Body)
s := string(bodyText)
return s
}

关于http - 使用基本身份验证和表单值进行 Http Post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24230500/

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