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, le La charge utile codée en URL est fournie à la fonction strings.NewReader, qui implémente io.Reader. La requête est alors correctement construite et envoyée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!