Maison > développement back-end > Golang > Pourquoi est-ce que je reçois un message 400 BAD REQUEST lors de l'envoi de requêtes POST codées en URL ?

Pourquoi est-ce que je reçois un message 400 BAD REQUEST lors de l'envoi de requêtes POST codées en URL ?

Linda Hamilton
Libérer: 2024-12-21 22:19:19
original
889 Les gens l'ont consulté

Why am I getting a 400 BAD REQUEST when sending URL-encoded POST requests?

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))
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal