Ich versuche, eine POST-Anfrage zu stellen, aber ich kann sie nicht erledigen. Auf der anderen Seite wird nichts empfangen.
Soll es so funktionieren? Ich bin mir der PostForm
Funktion bewusst, aber ich glaube, ich kann sie nicht verwenden, weil sie nicht getestet werden kann httputil
, oder?
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)
httputil
?Antworten:
Sie haben meistens die richtige Idee, es ist nur das Senden des Formulars, das falsch ist. Das Formular gehört in den Hauptteil der Anfrage.
req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
quelle
Ich weiß, dass dies alt ist, aber diese Antwort wurde in den Suchergebnissen angezeigt. Für den nächsten Mann - die vorgeschlagene und akzeptierte Antwort funktioniert, jedoch ist der ursprünglich in der Frage eingereichte Code niedriger als er sein muss. Niemand hat Zeit für das.
//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
quelle
req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
Content-Type
Header wird automatisch gesetztapplication/x-www-form-urlencoded
vonPostForm
: golang.org/pkg/net/http/#PostForm