메뉴 건너뛰기

프로그램언어

조회 수 1255 추천 수 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 23Dec
    by
    2016/12/23 Views 17989 

    gd_info 사용 가능한 GD 라이브러리에 대한 정보를 배열로 반환

  2. No Image 19Jul
    by
    2018/07/19 Views 5582 

    gcm 푸시 알림 php 테스트

  3. No Image 27Feb
    by
    2014/02/27 Views 21086 

    FPDF - PHP로 PDF 만들기

  4. No Image 14Apr
    by
    2015/04/14 Views 20297 

    fopen 파일 열기

  5. No Image 23Dec
    by
    2016/12/23 Views 18117 

    fileatime 파일에 최종적으로 접근한 시간을 반환

  6. No Image 19Jul
    by
    2018/07/19 Views 6049 

    fcm 푸시 알림 php 테스트

  7. No Image 23Dec
    by
    2016/12/23 Views 19943 

    explode - 문자열 나눔

  8. No Image 12Jan
    by
    2023/01/12 Views 227 

    ereg(), eregi(), ereg_replace(), eregi_replace(), split() 대체

  9. No Image 26Mar
    by
    2014/03/26 Views 19535 

    Drag/Drop HTML elements

  10. No Image 16Jan
    by
    2019/01/16 Views 1850 

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

  11. No Image 27Feb
    by
    2014/02/27 Views 28332 

    DB상의 많은 파일을 한꺼번에 다운받기

  12. No Image 28Sep
    by
    2018/09/28 Views 6085 

    DB 연동 4단 셀렉트 박스

  13. No Image 14Apr
    by
    2015/04/14 Views 21246 

    DB 내용을 화면에 출력(이중 for 문)

  14. No Image 05Oct
    by
    2020/10/05 Views 431 

    DAUM 지도 API 좌표→주소(주소->좌표) 변환

  15. No Image 26Mar
    by
    2021/03/26 Views 241 

    date() 함수의 출력 형식

  16. No Image 26Mar
    by
    2021/03/26 Views 253 

    current() next() key() 그외 배열관련 함수

  17. No Image 12Jan
    by
    2023/01/12 Views 335 

    curl을 이용하여 post, get 방식 으로 데이터 전송하기

  18. No Image 28Sep
    by 조쉬
    2020/09/28 Views 1255 

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

  19. No Image 26Mar
    by
    2021/03/26 Views 558 

    csv파일 다루기. fputcsv(), fgetcsv()

  20. CodeIgniter에서 PHPExcel 사용하기

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

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

© k2s0o1d4e0s2i1g5n. All Rights Reserved