Home  >  Article  >  Backend Development  >  How to use CURL to implement GET and POST requests in PHP

How to use CURL to implement GET and POST requests in PHP

零到壹度
零到壹度Original
2018-04-10 17:00:071563browse

CURL is a tool that uses URL syntax to transfer files and data. It supports many protocols, such as HTTP, FTP, TELNET, etc. The best part is that PHP also supports the CURL library. Using PHP's CURL library can easily and effectively scrape web pages. You only need to run a script and analyze the web pages you crawled, and then you can get the data you want programmatically. Whether you want to retrieve partial data from a link, take an XML file and import it into a database, or even simply retrieve the content of a web page, CURL is a powerful PHP library.

Basic steps for establishing CURL request in PHP

①: Initialization

curl_init()

②: Setting attributes

curl_setopt(). There is a long list of CURL parameters to set, which can specify various details of the URL request.

③: Execute and get the result

curl_exec()

④: Release the handle

curl_close()

CURL Implement GET and POST

①: GET method to implement

   //初始化 
      $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);

②:POST method to implement

  //初始化 
      $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);

③:如果获得的数据时json格式的,使用json_decode函数解释成数组。

$output_array = json_decode($data,true); //如果第二个参数为true,就转为数组的形式。如果不填就为对象的形式

如果使用json_decode($data)解析的话,将会得到object类型的数据。

我自己封装的一个函数

  //参数1:访问的URL,参数
 :post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies 2  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;
          }
  }

这俩个函数虽然不难,但是还是值得学习一下的。因为在做接口或者调用的接口的时候,必定会用到这俩个函数。

The above is the detailed content of How to use CURL to implement GET and POST requests in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn