• php请求API接口方法


    thinkphp下直接放入公共函数即可.

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

    /**
    * 模拟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; // 返回数据
    }

    /**
    * 对象转化为数组
    * @param object $obj 对象
    * @return array 数组
    */
    function object_to_array($obj){
    $_arr = is_object($obj) ? get_object_vars($obj) :$obj;
    foreach ($_arr as $key=>$val){
    $val = (is_array($val) || is_object($val)) ? object_to_array($val):$val;
    $arr[$key] = $val;
    }
    return $arr;
    }

    /**
    * array转xml
    * @param string $arr array
    * @return string XML
    */
    function arrayToXml($arr)
    {
    $xml = "<xml>";
    foreach ($arr as $key=>$val)
    {
    if (is_numeric($val))
    {
    $xml.="<".$key.">".$val."</".$key.">";
    }
    else
    $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
    }
    $xml.="</xml>";
    return $xml;
    }

    /**
    * 调用api接口
    * @param url $apiurl api.muxiangdao.cn/Article/articleList 接口地址
    * @param array $param ['status'=>'1','page'=>'2','pageshow'=>'10']; 参数(数组格式)
    * @param string $format eg:array(arr),object(obj),json;defalut = array 返回数据格式
    * @param string $method get or post 请求方法
    */
    function get_api($apiurl, $param, $format = 'array', $method = 'get'){
    if (is_array($param)) {
    $string = '?';
    foreach ($param as $key => $val){
    $string .= $key.'='.$val.'&';
    }
    $param = substr($string, 0, -1);
    }
    $url = $apiurl.$param;
    switch (strtolower($method)){
    case '':$json = get_url($url);break;
    case 'get':$json = get_url($url);break;
    case 'g':$json = get_url($url);break;
    case 'post':$json = post_url($apiurl,$param);break;
    case 'p':$json = post_url($apiurl,$param);break;
    default:$json = get_url($url);break;
    }
    $start = strpos($json, '{');
    $end = -1*(strlen(strrchr($json, '}'))-1);
    if ($end) {
    $json = substr($json, $start, $end);
    }else {
    $json = substr($json, $start);
    }
    $obj = json_decode($json);
    $array = object_to_array($obj);
    $xml = arrayToXml($array);
    switch ($format){
    case 'array':$data = $array;break;
    case 'arr':$data = $array;break;
    case 'obj':$data = $obj;break;
    case 'object':$data = $obj;break;
    case 'json':$data = $json;break;
    default:$data = $array;
    }
    return $data;
    }

  • 相关阅读:
    递归二分法和另类二分法(不推荐,因为占用资源)
    内置函数汇总
    非递归二分法
    2018.10.23习题随笔
    java中的类修饰符、成员变量修饰符、方法修饰符。
    js函数中的this关键字
    HTML5 <script>元素async,defer异步加载
    那些迷糊人的回调
    js函数prototype属性学习(二)
    js函数prototype属性学习(一)
  • 原文地址:https://www.cnblogs.com/yszr/p/8327711.html
Copyright © 2020-2023  润新知