当前位置:首页 > PHP教程 > php应用 > 列表

PHP调用接口API封装的例子

发布:smiling 来源: PHP粉丝网  添加日期:2022-01-01 12:42:03 浏览: 评论:0 

今天小编就为大家分享一篇PHP调用接口API封装的例子,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

GET:

  1. /** 
  2.  * 通过URL获取页面信息 
  3.  * @param $url 地址 
  4.  * @return mixed 返回页面信息 
  5.  */ 
  6. function get_url($url
  7.   $ch = curl_init(); 
  8.   curl_setopt($ch, CURLOPT_URL,$url); //设置访问的url地址 
  9.   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
  10.   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
  11.   curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//不输出内容 
  12.   $result = curl_exec($ch); 
  13.   curl_close ($ch); 
  14.   return $result

POST:

  1. /** 
  2.  * 模拟POST提交 
  3.  * @param string $url 地址 
  4.  * @param string $data 提交的数据 
  5.  * @return string 返回结果 
  6.  */ 
  7. function post_url($url$data)  
  8.   $curl = curl_init(); // 启动一个CURL会话 
  9.   curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 
  10.   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查 
  11.   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在 
  12.   curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器 
  13.   //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 
  14.   //curl_setopt($curl, CURLOPT_AUTOREFERER, 1);  // 自动设置Referer 
  15.   curl_setopt($curl, CURLOPT_POST, 1);       // 发送一个常规的Post请求 
  16.   curl_setopt($curl, CURLOPT_POSTFIELDS, $data);  // Post提交的数据包x 
  17.   curl_setopt($curl, CURLOPT_TIMEOUT, 30);     // 设置超时限制 防止死循环 
  18.   curl_setopt($curl, CURLOPT_HEADER, 0);      // 显示返回的Header区域内容 
  19.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);  // 获取的信息以文件流的形式返回 
  20.    
  21.   $tmpInfo = curl_exec($curl); // 执行操作 
  22.   if(curl_errno($curl))  
  23.  { 
  24.     echo 'Errno'.curl_error($curl);//捕抓异常 
  25.   } 
  26.   curl_close($curl); // 关闭CURL会话 
  27.   return $tmpInfo// 返回数据 

GET&&POST:

  1. /** 
  2.  * CURL请求 
  3.  * @param $url 请求url地址 
  4.  * @param $method 请求方法 get post 
  5.  * @param null $postfields post数据数组 
  6.  * @param array $headers 请求header信息 
  7.  * @param bool|false $debug 调试开启 默认false 
  8.  * @return mixed 
  9.  */ 
  10. function httpRequest($url$method$postfields = null, $headers = array(), $debug = false) { 
  11.   $method = strtoupper($method); 
  12.   $ci = curl_init(); 
  13.   /* Curl settings */ 
  14.   curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); 
  15.   curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"); 
  16.   curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */ 
  17.   curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */ 
  18.   curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); 
  19.   switch ($method) { 
  20.     case "POST"
  21.       curl_setopt($ci, CURLOPT_POST, true); 
  22.       if (!emptyempty($postfields)) { 
  23.         $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields
  24.         curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr); 
  25.       } 
  26.       break
  27.     default
  28.       curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */ 
  29.       break
  30.   } 
  31.   $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE; 
  32.   curl_setopt($ci, CURLOPT_URL, $url); 
  33.   if($ssl){ 
  34.     curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts 
  35.     curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在 
  36.   } 
  37.   //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/ 
  38.   curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1); 
  39.   curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/ 
  40.   curl_setopt($ci, CURLOPT_HTTPHEADER, $headers); 
  41.   curl_setopt($ci, CURLINFO_HEADER_OUT, true); 
  42.   /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */ 
  43.   $response = curl_exec($ci); 
  44.   $requestinfo = curl_getinfo($ci); 
  45.   $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); 
  46.   if ($debug) { 
  47.     echo "=====post data======\r\n"
  48.     var_dump($postfields); 
  49.     echo "=====info===== \r\n"
  50.     print_r($requestinfo); 
  51.     echo "=====response=====\r\n"
  52.     print_r($response); 
  53.   } 
  54.   curl_close($ci); 
  55.   return $response
  56.   //return array($http_code, $response,$requestinfo); 

实例:

  1. $res =httpRequest($url,'post',$data); 
  2. $json_array = json_decode($res,true); 
  3. $data=$json_array['data']['admin_user_list'];
  4. echo $data 

Tags: PHP调用接口API封装

分享到: