curl 사용 예제

1 1
function getContentURL($url,$postData=null)
{
$conn = curl_init($url);
$conn_timeout = 3;
$exec_timeout = 3;
curl_setopt($conn, CURLOPT_HEADER, false); //응답헤더 OFF. ON 할경우 받는 파일에 헤더가 붙음.
curl_setopt($conn, CURLOPT_RETURNTRANSFER , true); //응답 내용 가져올지 여부. TRUE면 내용을 리턴. FALSE면 직접 브라우저에 출력
curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 mins01"); //User Agent 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $conn_timeout); //서버 접속시 timeout 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $exec_timeout); //서버 접속시 timeout 설정
//curl_setopt($conn, CURLOPT_TIMEOUT, $timeout); // curl exec 실행시간 timeout 설정
if(isset($postData)){
curl_setopt($conn, CURLOPT_POST, TRUE); //POST 전송
curl_setopt($conn, CURLOPT_POSTFIELDS, $postData); //POST값 세팅
}
$result['body'] = curl_exec($conn);
$result['errormsg'] = curl_error($conn);
$result['errorno'] = curl_errno($conn);
$result['httpcode'] = curl_getinfo($conn,CURLINFO_HTTP_CODE);
return $result;
}

쿠키, 기타 해더 등이 있지만...
그냥 알아서 추가하시오/



//$postRow => xxx=yyy&zzz=ttt
//$cookieRaw=> xxx=yyy; zzz=ttt;

function getContentURL($url,$postRaw=null,$cookieRaw=null)
{
$result = array();
$result['header'] = '';
$result['body'] = '';
$result['errormsg'] = '';
$result['errorno'] = '';
$result['httpcode'] = '404';
//return $result; //에러처리
$c_url = $url;
//$c_url = 'http://XXXX/proxy2.php?url='.urlencode($url); //프록시 사용시

$conn = curl_init($c_url);
$conn_timeout = 5;
$exec_timeout = 5;
curl_setopt($conn, CURLOPT_HEADER, true); //응답헤더 OFF. ON 할경우 받는 파일에 헤더가 붙음.
curl_setopt($conn, CURLOPT_RETURNTRANSFER , true); //응답 내용 가져올지 여부. TRUE면 내용을 리턴. FALSE면 직접 브라우저에 출력
// curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 sdgd"); //User Agent 설정
curl_setopt($conn, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36"); //User Agent 설정
curl_setopt($conn, CURLOPT_CONNECTTIMEOUT, $conn_timeout); //서버 접속시 timeout 설정
curl_setopt($conn, CURLOPT_TIMEOUT, $exec_timeout); //서버 접속시 timeout 설정
//curl_setopt($conn, CURLOPT_TIMEOUT, $timeout); // curl exec 실행시간 timeout 설정
if(isset($postRaw[0])){
curl_setopt($conn, CURLOPT_POST, TRUE); //POST 전송
curl_setopt($conn, CURLOPT_POSTFIELDS, $postRaw); //POST값 세팅
}

if(isset($cookieRaw[0])){
curl_setopt($conn, CURLOPT_COOKIE, $cookieRaw); //POST값 세팅
}

$data = curl_exec($conn);
// printrr($data);
$split_result = split("\r\n\r\n", $data, 2);
$result['header'] = isset($split_result[0])?$split_result[0]:'';
$result['body'] = isset($split_result[1])?$split_result[1]:'';
$result['errormsg'] = curl_error($conn);
$result['errorno'] = curl_errno($conn);
$result['httpcode'] = curl_getinfo($conn,CURLINFO_HTTP_CODE);


@curl_close($conn);

// printrr($result);
//exit();

return $result;
}

#유틸 함수
# PHP 5이상용
function posts2raw($posts){
return http_build_query($posts, '', '&'); 
}
function cookies2raw($cookies){
if(count($cookies==0)){
return '';
}
return http_build_query($cookies, '', '; '); 
}


#SSL문제시 옵션
SSL certificate problem: self signed certificate in certificate chain

=> ssl 인증관련 동작 안하도록 함.
curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, FALSE);

# http가 200이 아닐때(에러 시)에도 body 가져오도록
curl_setopt($conn, CURLOPT_FAILONERROR, false);

# html 모든 내용이 깨져서 보일때
curl_setopt($conn,CURLOPT_ENCODING , "");
압축전송 인코딩 값을 ""로
댓글
  • No Nickname
    No Comment
  • 권한이 없습니다.
    {{m_row.m_nick}}
    -
제목 작성자 날짜
공대여자
공대여자
mins01
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자
공대여자