使用基本身份验证和formvalue执行Http Post请求
我正在为go中的API编写包装器。api使用基本身份验证,然后POST请求需要PostForm值。我在做这样的事情:使用基本身份验证和formvalue执行Http Post请求,http,go,wrapper,Http,Go,Wrapper,我正在为go中的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)
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请求,没有表单值,它可以工作。当我运行它时,它告诉我“name”值是必需的。(所以它没有得到它)
是否有任何原因导致此操作不起作用?来自
您必须将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
}
好主意@collinglass,出于某种原因,我认为
url.Values
有一个.String()
func.addingreq.Header.Add(“Content-Type”,“application/x-www-form-urlcoded”)
如果您发布表单,会有所帮助:)
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
}