„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum erhalte ich eine 400 BAD REQUEST, wenn ich URL-codierte POST-Anfragen sende?

Warum erhalte ich eine 400 BAD REQUEST, wenn ich URL-codierte POST-Anfragen sende?

Veröffentlicht am 22.12.2024
Durchsuche:928

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

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.

Neuestes Tutorial Mehr>

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