URL エンコードされたペイロードを含む POST リクエスト
URL エンコードされたデータを含む POST リクエストを構築する場合、一般的に 400 BAD が発生します。 REQUEST 応答。サーバーがペイロードを理解できないことを示します。この問題は通常、ペイロードが正しく提供されない場合に発生します。
標準ライブラリの http.NewRequest(...) メソッドは、io.Reader インターフェイスを実装する必要がある 3 番目の引数としてペイロードが提供されることを期待しています。 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 関数に提供されます。その後、リクエストは適切に構築されて送信されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3