[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() 함수를 사용했다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.