개발/PHP

[PHP] curl urlencode

soohkang 2020. 5. 6. 18:31
728x90

 

 

 

$s_data : 양쪽에서 약속한 암호화 한 값

 

 

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "text=".urlencode($s_data) );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/x-www-form-urlencoded'));
$result = curl_exec($ch);

 

 

form 데이터로 데이터를 전송할 때 Content-Type:application/x-www-form-urlencoded 이 설정되어 있어서 파라미터에 urlencode해서 보내지 않았더니 신호를 받는 쪽에서 오류가 발생한다.

 

 

파라미터 value 에도 urlencode 해야한다.

 

모든 곳에서 적용되는지 확실하지 않지만.. 안되면 의심해보자..

 

 

 

[참고한 공식 문서]

https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/POST

 

POST

HTTP POST 메서드는 서버로 데이터를 전송합니다. 요청 본문의 유형은 Content-Type 헤더로 나타냅니다.

developer.mozilla.org

https://curl.haxx.se/docs/manual.html

 

 

 

[참고한 블로그 출처]

https://bakyeono.net/post/2016-05-02-rest-api-client-for-cli.html

 

커맨드라인 환경에서 REST API (HTTP) 요청 보내기 (cURL, resty, httpie, Vim REST Control) | 박연오

 

bakyeono.net

URL에 사용할 수 없는 문자가 포함될 경우 URL 인코드(퍼센트 인코드)를 해 줘야 한다는 걸 알 것이다. cURL 자체 기능으로는 URL 인코드를 제공하지 않으므로 알아서 URL 인코드 한 주소를 매개변수로 넘겨야 한다. 그 대신 URL 쿼리 부분은 --data-urlenc

ode를 옵션을 이용해 URL 인코딩하여 요청할 수 있다.