카테고리 없음

[PHP] AJAX 및 CURL 호출 예제

먹세 2021. 4. 22. 07:23

javascript 세팅 (API서버로 바로 호출해도 되고, 자신의 백엔드 서버로 호출해도 됨 - 아래 CURL예시)

// FormData 형태로 전송
var formData = new FormData(); // FormData 선언
// 데이터 세팅
formData.append("customer_name", c_name);
formData.append("customer_phone", c_phone);
formData.append("customer_type", c_type);

var request_uri = "https://request_url.com";
  $.ajax({
  type: 'post',
  cache: false,
  url: request_uri,
  data: formData,
  processData: false, // FormData로 전송할때 꼭 써줘야할 부분. 안써주면 에러남
  contentType: false, // FormData로 전송할때 꼭 써줘야할 부분. 안써주면 에러남
  beforeSend : function(xhr){ // header 세팅
  xhr.setRequestHeader("REGISTRATION_ID", "asodifjasoi123123123");
  xhr.setRequestHeader("API_TOKEN", "1234aa-123aa-asdfsd9-asdf-aafdfb");
  },
  success:function(data) {
    if(data) {
      console.log(data);
      alert('전송이 완료 되었습니다.');
    }
  },
  error:function(request,status,error){
    console.log("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
    alert('전송이 완료되지 않았습니다.');
  }
});

 

동일 서버의 php 파일에서 CURL로 API호출 시, 위 javascript ajax를 받아서 세팅 하는 방법

header('Content-type: multipart/form-data; charset=UTF-8'); 
header('Access-Control-Allow-Origin: *');


/* 데이터 처리 */
$c_name = $_POST['customer_name'];
$c_phone = $_POST['customer_phone'];
$c_type = $_POST['customer_type'];
$REQUEST_URI = "https://request_url.com";
$API_TOKEN = "asdfasdf";
$REGISTRATION_ID = "aaaa111aaa";

/* CURL 호출 */
$post_data = array(
  "name" => $c_name,
  "phone" => $c_phone,
  "type" => $c_type,
);

$header_data = [];
$header_data[] .= 'Content-Type: multipart/form-data';
$header_data[] .= 'API_TOKEN: '.$API_TOKEN;
$header_data[] .= 'REGISTRATION_ID: '.$REGISTRATION_ID;

$ch = curl_init($REQUEST_URI);
curl_setopt($ch, CURLOPT_URL, $REQUEST_URI); // URI 설정
curl_setopt($ch, CURLOPT_POST, true); // post로 보내기
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // post data의 크기 측정
curl_setopt($ch, CURLOPT_HEADER, true); // 헤더정보를 보내도록 함
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data); // header 지정하기
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 리턴 설정- false : curl_exec 결과값을 브라우저에 바로 보여줌, true : 결과값을 변수에 저장하여 사용 가능

$curl_response = curl_exec($ch); // 리턴값 받기

curl_close($ch); // curl 종료

// json 형태로 응답
$response = var_dump($curl_response);
echo "{response:".$response."}";

 

반응형