Heim >Backend-Entwicklung >Golang >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?

Linda Hamilton
Linda HamiltonOriginal
2024-12-21 22:19:19884Durchsuche

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 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 wird der Funktion strings.NewReader bereitgestellt, die io.Reader implementiert. Die Anfrage wird dann ordnungsgemäß erstellt und gesendet.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich eine 400 BAD REQUEST, wenn ich URL-codierte POST-Anfragen sende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn