我正在编写一个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
}
Run Code Online (Sandbox Code Playgroud)
我有一个类似的,没有表单值的GET请求,它的工作原理.当我运行它时,它告诉我需要"名称"值.(所以它没有得到它)
有什么理由不起作用吗?
One*_*One 19
来自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
Run Code Online (Sandbox Code Playgroud)
您必须将您的身份传递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
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6535 次 |
最近记录: |