PHP

[PHP] CURL GET, POST 사용법

dev-mint 2022. 3. 3. 08:30

 

 

cURL(Client URL Library)

URL을 사용하여 서버와 연결, 다양한 데이터를 전송하는 프로그램으로

저는 Rest API 통신시 자주 사용하고 있습니다.

https://www.php.net/manual/en/intro.curl.php

 

 

cURL GET방식 예제
<?php
$api_server = 'https://도메인';

// get으로 보낼 array
$params = array('key1'=>'val1', 'key2'=>'val2');
$query = http_build_query($params);

$opts = array(
	CURLOPT_URL => $api_server . '?' . $query,
	CURLOPT_HEADER => true,
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_SSL_VERIFYPEER => false,
);

// 응답요청
$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$curl_response = curl_exec($curl_session);
$resMessage = (curl_error($curl_session))? null : $curl_response;
//print_r($curl_response);

$body = null;

if (curl_error($curl_session)) {
    // 실패
    $err     = curl_errno($curl_session);
    $errmsg  = curl_error($curl_session);

} else {
    // 성공
    $header_size = curl_getinfo($curl_session, CURLINFO_HEADER_SIZE);
    $header = substr($curl_response, 0, $header_size); // 헤더
    $body = substr($curl_response, $header_size);      // 응답전문

    $json_de = json_decode($body, true);
    //print_r($json_de);

}

curl_close($curl_session);
?>

 

cURL POST방식 예제
<?php
$api_server = "https://도메인";

// 요청전문 작성
$post_body = array();
$post_body['param1'] = "값1";
$post_body['param2'] = "값2";

$post_json = json_encode($post_body, JSON_UNESCAPED_UNICODE);

$opts = array(
    CURLOPT_URL => $api_server,
    CURLOPT_HEADER => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $post_json,
    //CURLOPT_POSTFIELDSIZE => 1000,
    CURLOPT_TIMEOUT => 10,
);

// 응답요청
$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$curl_response = curl_exec($curl_session);
$resMessage = (curl_error($curl_session))? null : $curl_response;
//print_r($curl_response);

$body = null;

if (curl_error($curl_session)) {
    // 실패
    $err     = curl_errno($curl_session);
    $errmsg  = curl_error($curl_session);

} else {
    // 성공
    $header_size = curl_getinfo($curl_session, CURLINFO_HEADER_SIZE);
    $header = substr($curl_response, 0, $header_size); // 헤더
    $body = substr($curl_response, $header_size);      // 응답전문

    $json_de = json_decode($body, true);
    //print_r($json_de);

}

curl_close($curl_session);
?>

curl_init : 새로운 cURL 리소스생성(초기화)

curl_setopt_array : cURL 전송시 여러 옵션 설정

curl_exec : cURL 실행

curl_getinfo : 전송 정보를 리턴받음

 

 

 

 

참고 : https://www.php.net/manual/en/ref.curl.php

 

PHP: cURL Functions - Manual

Fixed bugs in the function posted earlier (better javascript redirect following and now supports HTTPS) [[:space:]]+window\.location\.replace\('(.*)'\)/i", $content, $value) || preg_match("/>[[:space:]]+window\.location\=\"(.*)\"/i", $content, $value) ) &&

www.php.net