我正在尝试发出POST请求,但我无法完成它。另一方没有收到任何东西。
它是如何工作的?我知道PostForm
函数,但我认为我无法使用它,因为它无法使用httputil
进行测试,对吧?
hc := http.Client{}
req, err := http.NewRequest("POST", APIURL, nil)
form := url.Values{}
form.Add("ln", c.ln)
form.Add("ip", c.ip)
form.Add("ua", c.ua)
req.PostForm = form
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
glog.Info("form was %v", form)
resp, err := hc.Do(req)
答案 0 :(得分:107)
你有大多数正确的想法,只是发送错误的表格。表单属于请求正文。
req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
答案 1 :(得分:23)
我知道这很老,但是这个答案出现在搜索结果中。对于下一个人-提出并接受的答案有效,但是问题中最初提交的代码比所需的级别低。没有人有时间。
//one-line post request/response...
response, err := http.PostForm(APIURL, url.Values{
"ln": {c.ln},
"ip": {c.ip},
"ua": {c.ua}})
//okay, moving on...
if err != nil {
//handle postform error
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
//handle read response error
}
fmt.Printf("%s\n", string(body))