PHP调用接口API封装的例子


Posted in PHP onOctober 11, 2019

GET:

/**
 * 通过URL获取页面信息
 * @param $url 地址
 * @return mixed 返回页面信息
 */
function get_url($url)
{
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,$url); //设置访问的url地址
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//不输出内容
  $result = curl_exec($ch);
  curl_close ($ch);
  return $result;
}

POST:

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

GET&&POST:

/**
 * CURL请求
 * @param $url 请求url地址
 * @param $method 请求方法 get post
 * @param null $postfields post数据数组
 * @param array $headers 请求header信息
 * @param bool|false $debug 调试开启 默认false
 * @return mixed
 */
function httpRequest($url, $method, $postfields = null, $headers = array(), $debug = false) {
  $method = strtoupper($method);
  $ci = curl_init();
  /* Curl settings */
  curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
  curl_setopt($ci, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0");
  curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 60); /* 在发起连接前等待的时间,如果设置为0,则无限等待 */
  curl_setopt($ci, CURLOPT_TIMEOUT, 7); /* 设置cURL允许执行的最长秒数 */
  curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);
  switch ($method) {
    case "POST":
      curl_setopt($ci, CURLOPT_POST, true);
      if (!empty($postfields)) {
        $tmpdatastr = is_array($postfields) ? http_build_query($postfields) : $postfields;
        curl_setopt($ci, CURLOPT_POSTFIELDS, $tmpdatastr);
      }
      break;
    default:
      curl_setopt($ci, CURLOPT_CUSTOMREQUEST, $method); /* //设置请求方式 */
      break;
  }
  $ssl = preg_match('/^https:\/\//i',$url) ? TRUE : FALSE;
  curl_setopt($ci, CURLOPT_URL, $url);
  if($ssl){
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts
    curl_setopt($ci, CURLOPT_SSL_VERIFYHOST, FALSE); // 不从证书中检查SSL加密算法是否存在
  }
  //curl_setopt($ci, CURLOPT_HEADER, true); /*启用时会将头文件的信息作为数据流输出*/
  curl_setopt($ci, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ci, CURLOPT_MAXREDIRS, 2);/*指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的*/
  curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);
  curl_setopt($ci, CURLINFO_HEADER_OUT, true);
  /*curl_setopt($ci, CURLOPT_COOKIE, $Cookiestr); * *COOKIE带过去** */
  $response = curl_exec($ci);
  $requestinfo = curl_getinfo($ci);
  $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);
  if ($debug) {
    echo "=====post data======\r\n";
    var_dump($postfields);
    echo "=====info===== \r\n";
    print_r($requestinfo);
    echo "=====response=====\r\n";
    print_r($response);
  }
  curl_close($ci);
  return $response;
  //return array($http_code, $response,$requestinfo);
}

实例:

$res =httpRequest($url,'post',$data);
$json_array = json_decode($res,true);
$data=$json_array['data']['admin_user_list'];
 
echo $data

以上这篇PHP调用接口API封装的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用PHP调用数据库的存贮过程!
Oct 09 PHP
PHP 程序授权验证开发思路
Jul 09 PHP
php 获取远程网页内容的函数
Sep 08 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
php版淘宝网查询商品接口代码示例
Jun 17 PHP
php获取英文姓名首字母的方法
Jul 13 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
PHP访问数据库集群的方法小结
Mar 14 PHP
php实现登录tplink WR882N获取IP和重启的方法
Jul 20 PHP
PHP实现的自定义数组排序函数与排序类示例
Nov 18 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 #PHP
laravel中数据显示方法(默认值和下拉option默认选中)
Oct 11 #PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 #PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 #PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
Oct 11 #PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 #PHP
laravel 判断查询数据库返回值的例子
Oct 11 #PHP
You might like
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
php 学习资料零碎东西
2010/12/04 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
JavaScript使用Max函数返回两个数字中较大数的方法
2015/04/06 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
JS判断iframe是否加载完成的方法
2016/08/03 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
JavaScript简单拖拽效果(1)
2017/05/17 Javascript
浅谈MUI框架中加载外部网页或服务器数据的方法
2018/01/31 Javascript
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
简单的Python2.7编程初学经验总结
2015/04/01 Python
python动态性强类型用法实例
2015/05/09 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
Python实现的质因式分解算法示例
2018/05/03 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
画pytorch模型图,以及参数计算的方法
2019/08/17 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
2019/10/25 Python
Tensorflow不支持AVX2指令集的解决方法
2020/02/03 Python
通信工程专业毕业生推荐信
2013/12/25 职场文书
市场营销求职信范文
2014/02/21 职场文书
教师党员一句话承诺
2014/03/28 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
小组口号大全
2014/06/09 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
学校政风行风整改方案
2014/10/25 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
Python基础之元类详解
2021/04/29 Python
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers