1. CURL 요약
저는 개인적으로 컬 요청을 3단계로 요약합니다
1. 컬 핸들 생성(curl_init) 및 매개변수 설정(curl_setopt)(냉장고 열기)
2. 요청 실행(curl_exec) 3. 컬을 닫고(curl_close) 모든 리소스를 해제합니다(냉장고를 닫습니다)
실제로 코드가 복잡해 보인다면 복잡한 부분은 반환된 데이터를 처리하는 논리일 수 있습니다. . _ 2. CURL_SETOPT
생각해보면 setOption은 매개변수를 설정하며, 더 많은 매개변수가 있습니다. 일반적으로 사용되는 몇 가지 매개변수는 다음과 같습니다. 더 많은 매개변수를 보려면 여기를 클릭하세요. 공통 설정 UA, 쿠키, https 등이 있습니다.
bool curl_setopt ( , int , "User-Agent: ""Referer: " 禁止 cURL 验证对等证书(peer'헤더 헤더를 반환해야 하는 경우 직접 추가하세요.
curl_setopt($curl, CURLOPT_HEADER, 1);반환된 상태 코드를 확인하세요.
curl_getinfo(, CURLINFO_HTTP_CODE) if(curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200')GET 요청의 간단한 버전은 다음과 같습니다. Baidu에 대한 요청을 예로 들어 가장 기본적인 속성만 설정합니다:
=, CURLOPT_URL, 'http://www.baidu.com', CURLOPT_HEADER, 1, CURLOPT_RETURNTRANSFER, 1 = curl_exec((); ?>UA, 쿠키 등을 설정하는 것이 약간 복잡합니다. https 요청에는 SSL 인증서 확인만 필요하지만 http 요청에는 필요하지 않습니다. https://example.com/?id=$i와 유사한 일반 주소를 요청해야 하는 경우 for 루프를 수정하면 됩니다.
<?php class getRequest { const sUA = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; function vInitRequest() { $curl = curl_init(); curl_setopt($curl, CURLOPT_HEADER, self::sUA); curl_setopt($curl, CURLOPT_COOKIE, self::sCookie); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); /* * ssl check,use for https url */ curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1);// for ($iId = 1; $iId < 1000; $iId++) { // $sURL = self::sURL.$iId; curl_setopt($curl, CURLOPT_URL, self::sURL); $this->sExecRequest($curl);// } } function sExecRequest($curl) { $sRet = curl_exec($curl); print_r($sRet); /** * handle your response * stripos or preg */ curl_close($curl); } }$foo = new getRequest();$foo->vInitRequest();?>
3. 응답에서 헤더와 본문을 분리합니다.
먼저 표시할 헤더 정보를 설정해야 합니다. 물론 다음과 같은 설정으로 헤더와 본문을 가져올 수 있습니다. 유사한 다른 메소드
curl_setopt($curl, CURLOPT_HEADER, 1);list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2);전체 코드 :
<?php class getRequest { const sUA = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'; const sURL = 'https://www.baidu.com'; const sCookie = 'fake if you want'; function vInitRequest() { $curl = curl_init(); $i = 0; curl_setopt($curl, CURLOPT_HEADER, self::sUA); curl_setopt($curl, CURLOPT_COOKIE, self::sCookie); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($curl, CURLOPT_URL, self::sURL); $this->sExecRequest($curl); } function sExecRequest($curl) { $sRet = curl_exec($curl); // if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') { list($sHeader, $sBody) = explode("\r\n\r\n", $sRet, 2); // } print_r($sHeader); print_r($sBody); // curl_close($curl); } }$foo = new getRequest();$foo->vInitRequest();?>
4. POST 요청
POST 요청은 위의 Get 요청보다 두 개의 매개변수를 더 설정합니다.
1. 안녕하세요, POST를 사용하여 데이터를 제출하려고 합니다.
2. 내가 게시하는 데이터의 내용
curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, array('user'=>'test'));간단한 버전은 다음과 같습니다.
<?php$curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com'); curl_setopt($curl, CURLOPT_HEADER, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1);$aPostData = array( 'username' => 'test', .....); curl_setopt($curl, CURLOPT_POSTFIELDS, $aPostData);$sData = curl_exec($curl); curl_close($curl);var_dump($sData);?>
위 내용은 PHP 컬은 게시물 요청 사용 예 공유를 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!