首页 文章

如何在Go中发送POST请求?

提问于
浏览
52

我正在尝试发出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)

2 回答

  • 95

    我知道这已经过时了但搜索结果却出现了这个答案 . 对于下一个人 - 建议和接受的答案是有效的,但最初在问题中提交的代码是低于它需要的级别 . 没有人有时间 .

    //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))
    

    https://golang.org/pkg/net/http/#pkg-overview

  • 5

    你有大多数正确的想法,只是发送错误的表格 . 表单属于请求正文 .

    req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
    

相关问题