[php] curl post 간단한 사용법

안녕하세요. 드리머즈입니다.


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

작성자

Posted by 드리머즈

관련 글

댓글 영역