Solicitação POST com carga útil codificada em URL
Ao construir uma solicitação POST com dados codificados em URL, é comum encontrar um 400 BAD Resposta REQUEST, indicando que o servidor não consegue entender a carga útil. Esse problema normalmente surge quando a carga útil é fornecida incorretamente.
O método http.NewRequest(...) da biblioteca padrão espera que a carga útil seja fornecida como o terceiro argumento, que deve implementar a interface io.Reader. No caso de carga útil codificada em URL, isso significa que deve ser uma sequência de pares de valores-chave codificados.
Código de exemplo:
Para enviar corretamente a carga codificada em URL dados como uma solicitação POST usando http.NewRequest(...), considere o seguinte exemplo:
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)) }
Neste exemplo, a carga útil codificada em URL é fornecida para a função strings.NewReader, que implementa io.Reader. A solicitação é então construída e enviada corretamente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3