J'essaie de faire une demande POST mais je ne peux pas le faire. Rien n'est reçu de l'autre côté.
Est-ce ainsi que cela est supposé fonctionner? Je suis conscient de la fonction PostForm
mais je pense que je ne peux pas l'utiliser car il ne peut pas être testé avec httputil
, droite?
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)
Vous avez surtout la bonne idée, c'est simplement l'envoi du formulaire qui est faux. Le formulaire appartient au corps de la demande.
req, err := http.NewRequest("POST", url, strings.NewReader(form.Encode()))
Je sais que c'est vieux, mais cette réponse est apparue dans les résultats de recherche. Pour le gars suivant, la réponse proposée et acceptée fonctionne, mais le code initialement soumis dans la question est de niveau inférieur à ce qu'il devrait être. Personne n'a le temps pour ça.
//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))