>백엔드 개발 >PHP 튜토리얼 >PHP는 CURL을 사용하여 GET 및 POST 요청 단계 예제를 구현합니다.

PHP는 CURL을 사용하여 GET 및 POST 요청 단계 예제를 구현합니다.

韦小宝
韦小宝원래의
2018-02-24 09:43:092950검색

CURL은 URL 구문을 사용하여 파일과 데이터를 전송하는 도구입니다. HTTP, FTP, TELNET 등과 같은 다양한 프로토콜을 지원합니다. 가장 좋은 점은 PHP가 CURL 라이브러리도 지원한다는 것입니다. PHP의 CURL 라이브러리를 사용하여 웹페이지를 쉽고 효과적으로 스크랩하세요. 스크립트를 실행하고 크롤링한 웹페이지를 분석하기만 하면 프로그래밍 방식으로 원하는 데이터를 얻을 수 있습니다. 링크에서 부분 데이터를 검색하거나, XML 파일을 가져와 데이터베이스로 가져오거나, 단순히 웹 페이지의 콘텐츠를 검색하려는 경우에도 CURL은 강력한 PHP 라이브러리입니다.

PHP에서 CURL 요청을 설정하는 기본 단계

1: 초기화

curl_init()

②: 속성 설정

curl_setopt() //有一长串CURL 参数可供设置,它们能指定URL请求的各个细节。

3: 실행 및 결과 가져오기

curl_exec()

4: 핸들 해제

curl_close()

CURL GET 및 POST 구현

①:

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

구현을 위한 GET 메소드 ②:

//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//设置头文件的信息作为数据流输出
curl_setopt($curl, CURLOPT_HEADER, 1);
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//设置post数据
$post_data = array(
    "username" => "coder",
    "password" => "12345"
);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
/执行命令
$data = curl_exec($curl);
//关闭URL请求
curl_close($curl);
//显示获得的数据
print_r($data);

구현을 위한 POST 메소드 ③ 얻은 데이터가 json 형식인 경우 json_decode 함수를 사용하여 해석 그것을 배열로 만듭니다.

$output_array = json_decode($data,true); //두 번째 매개변수가 true이면 배열 형식으로 변환됩니다. 채우지 않으면 객체 형태가 됩니다

json_decode($data)를 사용하여 파싱하면 객체 형태의 데이터를 얻게 됩니다.

캡슐화된 함수

 //参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
function curl_request($url,$post='',$cookie='', $returnCookie=0){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
    curl_setopt($curl, CURLOPT_REFERER, "http://XXX");
        if($post) {
             curl_setopt($curl, CURLOPT_POST, 1);
             curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));
         }
        if($cookie) {
             curl_setopt($curl, CURLOPT_COOKIE, $cookie);
         }
    curl_setopt($curl, CURLOPT_HEADER, $returnCookie);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $data = curl_exec($curl);
        if (curl_errno($curl)) {
             return curl_error($curl);
        }
         curl_close($curl);
        if($returnCookie){
            list($header, $body) = explode("\r\n\r\n", $data, 2);
            preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);
            $info['cookie']  = substr($matches[1][0], 1);
            $info['content'] = $body;
            return $info;
        }else{
             return $data;
    }
}

이 두 함수는 어렵지 않지만 여전히 배울 가치가 있습니다. 왜냐하면 인터페이스를 만들거나 인터페이스를 호출할 때 이 두 함수를 사용해야 하기 때문입니다.

추천 관련 기사:

php로 Tmall 및 Taobao 제품 데이터를 크롤링하는 방법

위 내용은 PHP는 CURL을 사용하여 GET 및 POST 요청 단계 예제를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.