[PHP] curl POST 전송 때 파라미터 전달되지 않는 경우 해결법
아래와 같이 PHP에서 POST 요청을 curl 로 처리할 때 $param 배열의 파라미터가 제대로 전달되지 않는 경우가 있다.
<?php
$url = 'https://example.com/api';
$param = array(
'mid' => $mid,
'key' => $key,
'token' => $token
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$contents = curl_exec($ch);
curl_close($ch);
?>
이 때는 아래와 같이 파라미터를 get 방식으로 처리해서 전송하면 해결이 될 수 있다.
<?php
$url = 'https://example.com/api';
$param = array(
'mid' => $mid,
'key' => $key,
'token' => $token
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$contents = curl_exec($ch);
curl_close($ch);
?>
위 코드에서는 http_build_query() 함수를 사용했다.