URL エンコードされたペイロードを含む POST リクエスト
URL エンコードされたデータを含む POST リクエストを構築する場合、400 BAD が発生するのが一般的ですREQUEST 応答。サーバーがペイロードを理解できないことを示します。この問題は通常、ペイロードが正しく提供されない場合に発生します。
標準ライブラリの http.NewRequest(...) メソッドは、ペイロードが 3 番目の引数として提供されることを期待しており、io.Reader インターフェイスを実装する必要があります。 URL エンコードされたペイロードの場合、これはエンコードされたキーと値のペアの文字列である必要があることを意味します。
コード例:
URL エンコードされたペイロードを正しく送信するにはhttp.NewRequest(...) を使用してデータを POST リクエストとして送信するには、次の例を考えてみましょう:
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)) }
この例では、 URL エンコードされたペイロードは、io.Reader を実装する strings.NewReader 関数に提供されます。その後、リクエストは適切に構築されて送信されます。
以上がURL エンコードされた POST リクエストを送信すると 400 BAD REQUEST が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。