POST-Anfrage mit URL-kodierter Nutzlast
Beim Erstellen einer POST-Anfrage mit URL-kodierten Daten kommt es häufig vor, dass ein 400 BAD auftritt REQUEST-Antwort, die anzeigt, dass der Server die Nutzlast nicht verstehen kann. Dieses Problem tritt normalerweise auf, wenn die Nutzlast falsch bereitgestellt wird.
Die Methode http.NewRequest(...) der Standardbibliothek erwartet, dass die Nutzlast als drittes Argument bereitgestellt wird, das die io.Reader-Schnittstelle implementieren sollte. Im Fall einer URL-codierten Nutzlast bedeutet dies, dass es sich um eine Zeichenfolge codierter Schlüssel-Wert-Paare handeln sollte.
Beispielcode:
Um URL-codiert korrekt zu senden Um Daten als POST-Anfrage mit http.NewRequest(...) zu erstellen, betrachten Sie das folgende Beispiel:
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)) }
In diesem Beispiel wird die URL-codierte Nutzlast der Funktion strings.NewReader bereitgestellt, die io.Reader implementiert. Die Anfrage wird dann ordnungsgemäß erstellt und gesendet.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3