메뉴 건너뛰기

프로그램언어

조회 수 1313 추천 수 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);

 


  1. 13자리 timestamp 생성하기

  2. No Image 28Sep
    by 조쉬
    2020/09/28 Views 1313 

    cUrl를 이용한 json 데이타 주고 받기

  3. Javascript 두 좌표 사이의 거리 구하기, 두 좌표의 중앙 좌표 구하기

  4. No Image 22Sep
    by
    2020/09/22 Views 614 

    네이버 지도 API를 이용한 주소를 좌표로 변환하기 (PHP)

  5. No Image 24Aug
    by
    2020/08/24 Views 538 

    사업자등록번호 유효성 체크

  6. No Image 19Jun
    by
    2020/06/19 Views 671 

    멀티 파일다운로드 꽁수로 구현하기

  7. No Image 19Jun
    by
    2020/06/19 Views 822 

    파일 다운로드 함수(멀티 이어받기/속도제한)

  8. No Image 19Jun
    by
    2020/06/19 Views 717 

    다중 파일을 zip으로 묶어받기

  9. No Image 25May
    by
    2020/05/25 Views 845 

    사진이 회전되서 올라갈 경우

  10. No Image 31Dec
    by
    2019/12/31 Views 706 

    PHP 버전이 낮아 imagerotate() 함수가 없을때 대신 사용하는 함수

  11. No Image 24Jun
    by
    2019/06/24 Views 2012 

    PHP 외부 XML 파싱 하기

  12. 주간단위 시작일에서 종료일을 셀렉트박스로 만들기.

  13. No Image 29Apr
    by
    2019/04/29 Views 1444 

    utf-8 문자열을 주어진 바이트로 자르기

  14. No Image 25Feb
    by
    2019/02/25 Views 1617 

    PHP $_SERVER 함수

  15. No Image 19Feb
    by
    2019/02/19 Views 1616 

    PHP에서 UTF와 EUC-KR 변환

  16. PHP 가변변수 $$

  17. No Image 19Feb
    by
    2019/02/19 Views 2255 

    PHP http 를 https 로 전환(redirect), http->https

  18. No Image 19Feb
    by
    2019/02/19 Views 1298 

    input 자동완성기능 끄기

  19. No Image 16Jan
    by
    2019/01/16 Views 1915 

    dddotag - 허용하지 않는 태그 걸러내기

  20. No Image 16Jan
    by
    2019/01/16 Views 1383 

    애니메이션 gif 와 일반 gif 구분 하기

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved