메뉴 건너뛰기

프로그램언어

조회 수 1253 추천 수 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. No Image 16Jan
    by
    2019/01/16 Views 1288 

    포트체크 방법

  2. No Image 08Jan
    by
    2019/01/08 Views 1280 

    프레임 사이트에서 새로고침(F5) 할때 초기화면으로 이동하지 않음

  3. No Image 08Jan
    by
    2019/01/08 Views 1256 

    자동으로 다른 페이지로 넘어가는 함수

  4. No Image 28Sep
    by 조쉬
    2020/09/28 Views 1253 

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

  5. No Image 08Jan
    by
    2019/01/08 Views 1251 

    단어필터링

  6. No Image 16Jan
    by
    2019/01/16 Views 1249 

    태그 또는 멘션 소스 뽐아내기방법

  7. No Image 08Jan
    by
    2019/01/08 Views 1226 

    파일

  8. No Image 08Jan
    by
    2019/01/08 Views 1222 

    사업자번호로 사업자 종류알기

  9. No Image 08Jan
    by
    2019/01/08 Views 1222 

    디렉토리의 제어

  10. No Image 19Feb
    by
    2019/02/19 Views 1217 

    input 자동완성기능 끄기

  11. No Image 16Jan
    by
    2019/01/16 Views 1206 

    정규 표현 / 전화번호 / 이메일

  12. No Image 21Jan
    by
    2021/01/21 Views 1140 

    PHP + 유튜브(youtube) 동영상 업로드 연동 소스

  13. No Image 08Jan
    by
    2019/01/08 Views 1099 

    include 와 namespace

  14. No Image 26Mar
    by
    2021/03/26 Views 915 

    MYSQL DB의 모든 테이블에서 문자열 검색 하기

  15. 다중파일 업로드 + 이미지 미리보기 (Javascript, jQuery )

  16. No Image 25May
    by
    2020/05/25 Views 771 

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

  17. phpMyAdmin WebMysql 에 CSV 엑셀 파일 업로드 입력하기 ( Excel / Upload / data / 데이터 / 데이타 )

  18. No Image 26Mar
    by
    2021/03/26 Views 747 

    함수이름을 변수로 사용하기, 매개변수 없는 함수에 매개변수 넣기

  19. No Image 08Jul
    by
    2021/07/08 Views 698 

    날짜함수 사용하여 한달에 주차 구하기 weeks by month

  20. No Image 26Mar
    by
    2021/03/26 Views 690 

    PEAR DB 관련 함수들

Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 Next
/ 17

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved