[go] Go에서 POST 요청을 보내는 방법은 무엇입니까?

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)



답변

당신은 대부분 올바른 아이디어를 가지고 있으며 잘못된 양식을 보내는 것입니다. 양식은 요청 본문에 속합니다.

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


답변

나는 이것이 오래되었다는 것을 알고 있지만이 답변은 검색 결과에 나타났습니다. 다음 사람에게는 제안되고 수락 된 답변이 작동하지만 질문에 처음 제출 된 코드는 필요한 수준보다 낮습니다. 아무도 그럴 시간이 없습니다.

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


답변