Solicitud POST con carga útil codificada en URL
Al construir una solicitud POST con datos codificados en URL, es común encontrar un 400 BAD SOLICITUD de respuesta, que indica que el servidor no puede comprender la carga útil. Este problema suele surgir cuando la carga útil se proporciona incorrectamente.
El método http.NewRequest(...) de la biblioteca estándar espera que la carga útil se proporcione como tercer argumento, que debería implementar la interfaz io.Reader. En el caso de una carga útil codificada en URL, esto significa que debe ser una cadena de pares clave-valor codificados.
Código de ejemplo:
Para enviar correctamente una carga útil codificada en URL datos como una solicitud POST usando http.NewRequest(...), considere el siguiente ejemplo:
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)) }
En este ejemplo, la carga útil codificada en URL se proporciona a la función strings.NewReader, que implementa io.Reader. Luego, la solicitud se construye y envía correctamente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3