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 相关文章推荐
Ajax PHP分页演示
Jan 02 PHP
phpinfo 系统查看参数函数代码
Jun 05 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
浅析php数据类型转换
Jan 09 PHP
php将csv文件导入到mysql数据库的方法
Dec 24 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
php实现的读取CSV文件函数示例
Feb 07 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
Feb 27 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
Mar 09 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
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
laravel实现批量更新多条记录的方法示例
2017/10/22 PHP
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
js动态引入的四种方法
2018/05/05 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
详解为什么Vue中不要用index作为key(diff算法)
2020/04/04 Javascript
详解JavaScript之Array.reduce源码解读
2020/11/01 Javascript
python批量修改文件名的实现代码
2014/09/01 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python中协程用法代码详解
2018/02/10 Python
详解用TensorFlow实现逻辑回归算法
2018/05/02 Python
解决Python 爬虫URL中存在中文或特殊符号无法请求的问题
2018/05/11 Python
深入浅析python3中的unicode和bytes问题
2019/07/03 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
俄罗斯厨房产品购物网站:COOK HOUSE
2021/03/15 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
大四毕业生学习总结的自我评价
2013/10/31 职场文书
机电一体化职业规划书
2014/01/07 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
物理研修随笔感言
2014/02/14 职场文书
最新大学生创业计划书写作攻略
2014/04/02 职场文书
大学班长竞选稿
2015/11/20 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript
win10双系统怎么删除一个系统?win10电脑有两个系统删除一个的操作方法
2022/07/15 数码科技