메뉴 건너뛰기

프로그램언어

조회 수 1260 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

curl ( 저는 컬이라고 부르긴 합니다. 가끔 씨 유알엘 이라고도 하고요.)는 Client Url의 약자로 클라이언트 측에서 다양한 프로토콜을 이용해 데이터를 전송하고 받을 수 있는 라이브러리라고 생각하시면 될 것 같습니다.

요즘은 API 호출이나 페이지 파싱할때 많이 사용하는데 curl를 이용해서 json 데이터 주고받기를 샘플로 만들어봤습니다.

 

1. cUrl 공통 클래스 제작

 CommonCall 이라는 공통 클래스를 이용해서 어디서든지 호출할 수 있도록 작업을 했습니다. selectMode라는 메서드를 이용해서 파라미터 별로 주소를 다르게 해서 호출하게 했습니다. 호출 url도 다양하게 나누어서 사용해도 될 것으로 보입니다. call 메서드의 $postData는 array 형입니다. 

<?php
/**
 * 공통 API 호출 클래스
 * @author Sari
 * @date 2019.11.05
 */

class CommonCall {

	private $serverUrl;	// 호출Url
	private $actionUrl;	// 실작업Url
	
	/**
	 * 생성자
	 */
	public function __construct(){
		$this->serverUrl = "서버주소";
	}
	
	/**
	 * 공통서비스 Call을 하는 부분
	 * @param $mode
	 * @param $postData
	 * @param $functionName
	 * @return
	 */
    public function call($mode , $postData = null, $functionName = "") {
    	    $this->selectMode($mode);
            $postData = json_encode($postData);
            
            $headers = array(
            	"Content-Type: application/json;"
            	, "Content-Length: ".strlen($postData).""
            	,
            );
            
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $this->serverUrl . $this->actionUrl);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $response = curl_exec($ch);
            curl_close($ch);
            
            $result = json_decode(urldecode($response));
            
            return $result;
    }

    private function selectMode($mode){
    	
    	switch ($mode) {
    		case "save":
    			$this->actionUrl = "/save.php";
    			break;
    		case "use":
    			$this->actionUrl = "/use.php";
    			break;
    		case "create":
    			$this->actionUrl = "/create.php";
    			break;
    		case "show":
    			$this->actionUrl = "/show.php";
    			break;
    		default:    			
    			break;
    	}
    }
}

굳이 이렇게 안하시고 call 메서드 안에 있는 curl 부분만 복사해서 작업하셔도 무방합니다.

 

2. curl 호출하기

 저는 클래스로 따로 만들었기때문에 해당 객체를 생성 후 데이터를 조립해 호출을 하는 방법으로 진행했습니다.

<?php

include_once $_SERVER["DOCUMENT_ROOT"]."/_class/common/CommonCall.class.php";
$commonCall = new CommonCall();

$requestData["a"] = "a";
$requestData["b"] = "b";
$resultArray = $commonCall->call("show", $requestData, "show");

 

3. json 데이타 받기

 호출당하는 서버에서는 아래와 같이 json 데이터를 받을 수 있습니다. 작업을 진행 후 똑같이 json_encode 함수를 이용해 출력해주면 호출한 서버에서 해당 자료를 받을 수 있습니다.

<?php
$requestData = file_get_contents('php://input');
$requestData = json_decode($requestData, true);

// --- 작업 전
...
...
// --- 작업 후

echo json_encode($result);

 


List of Articles
번호 제목 날짜 조회 수
320 mysql 에러 구문 표시 2014.02.27 20350
319 MYSQL 업데이트 두 번 하기 2014.02.27 19735
318 php 파일 확장자 2014.02.27 20237
317 php 파일 다운로드 구현 2014.02.27 19798
316 해당하는 날짜가 그달의 몇주째인지 계산 2014.02.27 26353
315 FPDF - PHP로 PDF 만들기 2014.02.27 21089
314 [PHP] 한글명 파일 다운로드받기 2014.03.26 20561
313 웹페이지 프린트 하기 html 수준 2014.03.26 19807
312 웹에서 Excel 로 출력하기 2014.03.26 20361
311 jQuery 개발자를 위한 메모 - 플러그 인 2014.03.26 19258
310 JSON and JavaScript usage 2014.03.26 19066
309 jQuery 개발자를 위한 메모 - 레퍼런스 2014.03.26 19524
308 특수문자 없애는 정규표현식 2014.03.26 21630
307 이미지 워터마크 구현 2014.03.26 19680
306 Drag/Drop HTML elements 2014.03.26 19537
305 네이버 지도 api php버전 2014.03.26 19440
304 PHP 소스 : 이미지 리사이즈, 섬네일 2014.03.26 20709
303 어떤 스마트폰으로 접속했는지 알아내는 소스 , (안드로이드 아이폰 ) 2014.03.26 17720
302 PHP 세션에서 시작, 변수등록, 변수삭제, 부수기 2014.03.26 19494
301 PHP 에서의 소켓(Socket) 통신 2014.04.12 20398
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved