Requête POST avec charge utile codée en URL
Lors de la construction d'une requête POST avec des données codées en URL, il est courant de rencontrer un 400 BAD Réponse REQUEST, indiquant que le serveur ne peut pas comprendre la charge utile. Ce problème survient généralement lorsque la charge utile est fournie de manière incorrecte.
La méthode http.NewRequest(...) de la bibliothèque standard s'attend à ce que la charge utile soit fournie comme troisième argument, qui doit implémenter l'interface io.Reader. Dans le cas d'une charge utile codée en URL, cela signifie qu'il doit s'agir d'une chaîne de paires clé-valeur codées.
Exemple de code :
Pour envoyer correctement une charge utile codée en URL données sous forme de requête POST utilisant http.NewRequest(...), considérons l'exemple suivant :
package main import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func main() { apiUrl := "https://api.com" resource := "/user/" data := url.Values{} data.Set("name", "foo") data.Add("surname", "bar") u, _ := url.ParseRequestURI(apiUrl resource) client := &http.Client{} r, _ := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(data.Encode())) r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"") r.Header.Add("Content-Type", "application/x-www-form-urlencoded") resp, _ := client.Do(r) fmt.Println(resp.Status) bodyBytes, _ := ioutil.ReadAll(resp.Body) fmt.Println(string(bodyBytes)) }
Dans cet exemple, la charge utile codée en URL est fournie à la fonction strings.NewReader, qui implémente io.Reader. La demande est ensuite correctement construite et envoyée.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3