Heim >Backend-Entwicklung >Golang >Warum erhalte ich eine 400 BAD REQUEST, wenn ich URL-codierte POST-Anfragen sende?
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!