반응형

CURL 통신

1. curl

- curl 통신 이란 다양한 종류의 프로토콜을 사용하여 서버와 통신할 수 있도록 도와주는 모듈이다.

- HTTPS뿐 아니라 HTTP GET, POST, PUT 등의 프로토콜을 사용이 가능하고 파일 업로드 Proxy, Cookie 그리고 사용자 인증 기능도 제공하는 모듈이다.

 

2. curl 설치

- curl모듈이 설치되지 않았을때 curl을 사용하려 하면 아래와 같은 오류를 볼 수 있다.

Fatal error: Call to undefined function curl_init()

- 리눅스를 사용하는 경우, 아래와 같이 sudo 명령어를 이용해 curl모듈을 설치한다.

sudo apt install php-curl

3. curl 사용

- GET통신 기본

//접속 할 URL을 지정
$url = "https://www.naver.com";

//cURL 세션 초기화
$ch = curl_init();

//URL과 옵션을 설정
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 요청결과를 문자열로 반환

//cURL 실행
$res = curl_exec($ch);

//세션을 종료
curl_close($ch);

- POST통신 기본

//접속 할 URL을 지정
$url = "https://www.naver.com";

//전송할 데이터를 설정
$param = array('key' => 'data');

//cURL 세션 초기화
$ch = curl_init();

//URL과 옵션을 설정
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 요청결과를 문자열로 반환

curl_setopt($ch, CURLOPT_POST, true); // POST 전송 여부
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); // POST DATA

//cURL 실행
$res = curl_exec($ch);

//세션을 종료
curl_close($ch);

- 통신시 옵션

// curl 통신시 옵션은 curl 세션 초기화와 curl 실행 사이에 옵션을 추가하여 사용한다.
// 아래의 옵션외에도 많은 옵션들이 있다.(참고 : https://www.php.net/manual/en/function.curl-setopt.php)

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); // connection timeout : 10초
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 원격 서버의 인증서가 유효한지 검사 여부
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 인증서의 일반 이름 필드 또는 주체 대체 이름 필드가 제공된 호스트 이름과 일치 여부
curl_setopt($ch, CURLOPT_SSLVERSION,1); // SSL 버전(가장 좋은 방법은 이것을 설정하지 않고 기본값을 사용하는 것입니다. SSLv2 및 SSLv3의 알려진 취약점을 감안할 때 2 또는 3으로 설정하는 것은 매우 위험)

curl_setopt($ch, CURLOPT_HTTPHEADER, $send_header); // HTTP 헤더 필드의 배열 (array('Content-type: text/plain', 'Content-length: 100'))
반응형

+ Recent posts