[php] curl post 간단한 사용법
프로그래밍/웹 프로그래밍 관련2017. 11. 27. 20:38
안녕하세요. 드리머즈입니다.
php에서 curl post 사용해보고 간단하게 자료 남깁니다.
kakao REST API를 사용하여 정상동작함을 확인했습니다.
POST 데이터 정하는 부분이 제일 중요한 것 같습니다. ($post_data)
그리고 $header_data 및 $url도 상황에 맞게 당연히 수정해서 사용해야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php $url = 'https://kapi.kakao.com/v1/user/me'; //접속할 url 입력 $post_data["param1key"] = "param1value"; $post_data["param2key"] = "param2value"; $access_token_value = "올바른 access token 입력"; //$header_data = array('Authorization: Bearer access_token_value'); //에러 발생 $header_data = []; $header_data[] = 'Authorization: Bearer '.$access_token_value; $ch = curl_init(); //curl 사용 전 초기화 필수(curl handle) curl_setopt($ch, CURLOPT_URL, $url); //URL 지정하기 curl_setopt($ch, CURLOPT_POST, 1); //0이 default 값이며 POST 통신을 위해 1로 설정해야 함 curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_data); //POST로 보낼 데이터 지정하기 curl_setopt ($ch, CURLOPT_POSTFIELDSIZE, 0); //이 값을 0으로 해야 알아서 &post_data 크기를 측정하는듯 curl_setopt($ch, CURLOPT_HEADER, true);//헤더 정보를 보내도록 함(*필수) curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data); //header 지정하기 curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //이 옵션이 0으로 지정되면 curl_exec의 결과값을 브라우저에 바로 보여줌. 이 값을 1로 하면 결과값을 return하게 되어 변수에 저장 가능(테스트 시 기본값은 1인듯?) $res = curl_exec ($ch); var_dump($res);//결과값 확인하기 echo '<br>'; print_r(curl_getinfo($ch));//마지막 http 전송 정보 출력 echo curl_errno($ch);//마지막 에러 번호 출력 echo curl_error($ch);//현재 세션의 마지막 에러 출력 curl_close($ch); ?> | cs |
curl의 response 처리하는 방법도 남깁니다.
$res = curl_exec ($ch); 코드 이후에 아래의 코드를 추가하면 됩니다.
1 2 3 4 5 6 | $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($res, 0, $header_size); $body = substr($res, $header_size); $body_json = json_decode($body, true); print_r($body_json); | cs |
$header는 response header를 담고 있고, $body는 response body를 담고 있습니다. 만약 response body가 json 형식으로 되어있다면 json_decode()함수를 이용하여 파싱을 하면 자동으로 배열로 변환되어집니다.
참고
CURLOPT_POST 설명(영어) : https://curl.haxx.se/libcurl/c/CURLOPT_POST.html
php공식 메뉴얼 : http://php.net/manual/kr/function.curl-setopt.php
php curl 예제 사이트(영어) : http://hayageek.com/php-curl-post-get/#curl-post
댓글 영역