본문으로 바로가기

cURL POST전송, JSON리턴, Proxy환경

category [ Web 관련 ]/php 2019. 8. 8. 17:53
<?php
//api 호출 테스트

//본 서버, 테스트 서버 체크
$hostname=$_SERVER["HTTP_HOST"];
if(strpos($hostname, "본섭 도메인") !== false) {
    //본섭일 경우
    $proxyUse = false;
}else{
    $proxyUse = true;
    $proxyUrl = "주소";
    $proxyPort = "포트";
}


$uid = "아이디";
$upwd = "패스워드";

$url = "api주소";

//파라미터 셋팅
$data = array(
    'uid' => $uid,
    'upwd' => $upwd
);

//$data["uid"] = $uid;
//$data["upwd"] = $upwd;

//$json_data = json_encode($data); //JSON으로 요청해야 할경우 배열을 JSON으로 변경

$ch = curl_init(); //curl 초기화
curl_setopt($ch, CURLOPT_URL, $url);                    //호출 URL
curl_setopt($ch, CURLOPT_POST, true);             //true시 post 전송
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);            //전송 할 데이터
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   //요청 결과를 문자열로 반환
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //원격 서버의 인증서가 유효한지 검사 안함
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);     //connection timeout 10초
//curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //User-Agent
//curl_setopt($ch, CURLOPT_HEADER, true); //헤더 정보를 보내고 받도록 함
//curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json')); //헤더 정보

if($proxyUse) {
    curl_setopt($ch, CURLOPT_PROXY, $proxyUrl);
    curl_setopt($ch, CURLOPT_PROXYPORT, $proxyPort);
}

$response = curl_exec($ch);
$err = curl_error($ch);


//var_dump($response);//결과값 확인하기
//print_r(curl_getinfo($ch));//마지막 http 전송 정보 출력
//echo curl_errno($ch);//마지막 에러 번호 출력
//echo curl_error($ch);//현재 세션의 마지막 에러 출력

curl_close($ch);

if ($err) {
    echo "cURL Error # : " . $err;
} else {
    $val = json_decode($response);
    echo $val->state;
    echo "<br>";
    echo $val->referer;
    echo "<br>";
    echo $val->uid;
    echo "<br>";
    echo $val->upwd;
    echo "<br>";
}

exit;
?>