URL 인코딩 페이로드가 포함된 POST 요청
URL 인코딩 데이터가 포함된 POST 요청을 구성할 때 400 BAD가 발생하는 것이 일반적입니다. 서버가 페이로드를 이해할 수 없음을 나타내는 REQUEST 응답입니다. 이 문제는 일반적으로 페이로드가 잘못 제공될 때 발생합니다.
표준 라이브러리의 http.NewRequest(...) 메서드는 페이로드가 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 함수에 제공됩니다. 그러면 요청이 적절하게 구성되어 전송됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3