http.NewRequest(...)를 사용하여 URL 인코딩된 POST 요청 만들기
이 컨텍스트에서는 POST를 보내려고 합니다. application/x-www-form-urlencoded 콘텐츠 형식의 페이로드를 사용하여 사전 정의된 API를 통해 요청합니다. Request.ParseForm과 같은 메서드에 의존하는 대신 http.NewRequest(...)를 사용하여 선호되는 접근 방식을 더 자세히 살펴보겠습니다.
요청 헤더를 효율적으로 관리하기 위해 http.NewRequest(method, urlStr string)를 선택했습니다. , body io.Reader)를 사용하여 요청을 작성하세요. 이 전략은 일반적으로 타당하지만, 주요 감독은 페이로드 처리에 있습니다. HTTP 사양에 따르면 URL 인코딩 페이로드는 URL에 직접 추가되지 않고 본문 매개변수를 통해 제공되어야 합니다.
따라서 이 문제를 해결하려면 URL 인코딩 페이로드를 포함하도록 코드를 수정해야 합니다. 본문 섹션에서. 예는 다음과 같습니다.
package main import ( "fmt" "net/http" "net/url" "strings" ) func main() { apiUrl := "https://api.com" resource := "/user/" data := url.Values{} data.Set("name", "foo") data.Set("surname", "bar") u, _ := url.ParseRequestURI(apiUrl) u.Path = resource urlStr := u.String() // "https://api.com/user/" client := &http.Client{} r, _ := http.NewRequest(http.MethodPost, urlStr, strings.NewReader(data.Encode())) // URL-encoded payload 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) }
이 수정을 통해 이제 코드는 API에서 요구하는 대로 본문에 URL 인코딩 페이로드를 올바르게 보내야 합니다. 결과적으로 resp.Status 200 OK로 표시된 대로 성공적인 응답을 기대해야 합니다.
위 내용은 http.NewRequest()를 사용하여 URL 인코딩된 POST 요청을 올바르게 보내는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!