登录  /  注册
首页 > php教程 > PHP源码 > 正文
接口调用模型
php中文网
发布: 2016-07-06 13:28:28
原创
1001人浏览过
跳至 [1] [全屏预览]
baseUrl = $baseUrl;
        } else {
            $this->baseUrl = Cola::config('_bigDataApiURL');
        }
        $u2Config = Cola::config('_OAuthU2Config');//从配置文件中获取验证信息
        $this->loginAppId = $u2Config['AppId'];//获取登录用户的信息
        $this->accessToken = 'ef4e3a2b-ae21-4cad-ada8-86ec46a8a83g';//获取登录用户信息
    }

    /**
     * 设置url
     *
     * @param string $url url地址
     */
    public function setBaseUrl($url)
    {
        $this->baseUrl = $url;
    }

    /**
     *  设置AccessToken
     *
     * @param void
     */
    public function setAccessToken($token)
    {
        $this->accessToken = $token;
    }

    /**
     * 开启缓存
     *
     * @param bool $bool
     */
    public function openCache($bool = true)
    {
        $this->_fileCache = $bool;
    }

    /**
     * 获取数据
     *
     * @param      $method 方法名
     * @param array $params 参数
     * @param int $isPost 0 GET,1 POST请求
     * @param bool $cache 缓存
     *
     * @return mixed
     */
    public function getData($method, $params = null, $isPost = 0, $cache = false)
    {
        if (!is_null($isPost)) {
            $params['accessToken'] = $this->accessToken;
            $params['appId'] = $this->loginAppId;
        }
        $url = $this->_getUrl($method, $params, $isPost);
        if (true == $cache || true == $this->_fileCache) {
            return $this->_getCache($url, $params, $isPost);
        }

        return $this->_curlRequest($url, $params, $isPost);
    }

    /**
     * 删除缓存
     *
     * @param      $method 方法名
     * @param null $params 参数
     * @param int  $isPost 0 GET,1 POST请求
     *
     * @return bool
     */
    public function deleteCache($method, $params = null, $isPost = 0)
    {
        $url = $this->_getUrl($method, $params, $isPost);

        $key = $this->_cacheKey($url, $params, $isPost);

        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        return $file->delete($key);
    }

    /**
     * 获取缓存key文件名
     *
     * @param      $method
     * @param null $params
     * @param int  $isPost
     *
     * @return mixed
     */
    public function getCacheFile($method, $params = null, $isPost = 0)
    {
        $url = $this->_getUrl($method, $params, $isPost);

        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        $key = $this->_cacheKey($url, $params, $isPost);

        return $file->getFile($key);
    }

    /**
     * 请求接口URL
     *
     * @param      $method
     * @param null $params
     * @param int  $isPost
     *
     * @return string
     */
    public function getUrl($method, $params = null, $isPost = 0)
    {
        if (!is_null($isPost)) {
            $params['accessToken'] = $this->accessToken;
            $params['appId'] = $this->loginAppId;
        }
        return $this->_getUrl($method, $params, $isPost);
    }

    /**
     * 获取拼接后的请求地址【缓存的key】
     *
     * @param $method 方法名
     * @param $params 参数
     * @param $isPost 0 GET,1 POST请求
     *
     * @return string
     */
    private function _getUrl($method, $params, $isPost)
    {
        $url = $this->baseUrl . $method;
        if ($isPost == 0) {
            if (is_array($params) && !empty($params)) {
                strpos($url, '?') === false ? $tmpParams = "?" : $tmpParams = "&";
                foreach ($params as $key => $value) {
                    $tmpParams .= $key . "=" . urlencode($value) . "&";
                }

                $url .= rtrim($tmpParams, '&');
            }
        }
        return $url;
    }

    /**
     * 获取缓存数据
     *
     * @param string $url    url
     * @param array  $params 参数
     * @param int    $isPost 0 GET,1 POST请求
     *
     * @return mixed
     */
    private function _getCache($url, $params, $isPost)
    {
        $file = Cola_Com_Cache::factory(Cola::config('_fileCache'));

        //缓存的key
        $sKey = $this->_cacheKey($url, $params, $isPost);
        $res = $file->get($sKey);
        if (!$res) {
            $res = $this->_curlRequest($url, $params, $isPost);
            if (false !== $res) {
                $file->set($sKey, $res);
            }
        }

        return $res;
    }

    /**
     * 设置缓存key
     *
     * @param $url
     * @param $params
     * @param $isPost
     *
     * @return string
     */
    private function _cacheKey($url, $params, $isPost)
    {
        return $url . @json_encode($params) . $isPost;
    }

    /**
     * json转换为数组
     *
     * @param string $string
     *
     * @return mixed
     */
    private function _json2array($string)
    {
        if (@$json = @json_decode($string, true)) {
            return $json;
        } else {
            return $string;
        }
    }

    /**
     * curl 请求
     *
     * @param string $url    请求地址
     * @param array  $params 参数【!!仅当POST时有用】
     * @param int    $isPost 0 GET,1 POST请求
     *
     * @return mixed
     */
    private function _curlRequest($url, $params = array(), $isPost = 0)
    {
        header("Content-type: text/html; charset=utf-8");
        set_time_limit(0);
        // echo $url ; echo "
"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt ($curl , CURLOPT_TIMEOUT , 0 ); curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36SE 2.X MetaSr 1.0'); if ($isPost == 1) { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $params);//所需传的数组用http_bulid_query()函数处理一下,就ok了 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); } $result = curl_exec($curl); $result = $this->_json2array($result); return $this->_checkRequestStatus($result, $url, $params); } /** * 检查请求状态 * * 参考地址:http://scmgit.staff.xdf.cn/bigdata/mdm/wikis/error_code * * @param $result * @param $url * @param $params * * @return bool */ private function _checkRequestStatus($result, $url, $params) { //错误验证 if (empty($result) || in_array(@$result['status'], array(400, 404, 500))) { //写入日志 $logFile = WEB_ROOT . '../app/' . 'log/api' . DS . date('Y') . DS . date('m') . DS . date('d') . '-error.log'; $log = Cola_Com::log(array('adapter' => 'File', 'params' => array('file' => $logFile, 'mode' => 0755))); $log->log("请求地址:" . $url . " 参数:" . json_encode($params) . " 错误信息:" . json_encode($result)); return false; } else{ //写入日志 $arr = explode('/', $url); if(in_array('rule', $arr)){ $logFile = WEB_ROOT . '../app/' . 'log/api' . DS . date('Y') . DS . date('m') . DS . date('d') . '-su.log'; $log = Cola_Com::log(array('adapter' => 'File', 'params' => array('file' => $logFile, 'mode' => 0755))); $log->log("请求地址:" . $url . " 参数:" . json_encode($params) . " 错误信息:" . json_encode($result)); } } return $result; } }
登录后复制
相关标签:
来源:php中文网
上一篇:PHP实现批量审核和批量删除的源代码 下一篇:PHP 大量QQ表情代码替换
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 技术文章
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2023 //m.sbmmt.com/ All Rights Reserved | 苏州跃动光标网络科技有限公司 | 苏ICP备2020058653号-1

 | 本站CDN由 数掘科技 提供

登录PHP中文网,和优秀的人一起学习!
全站2000+教程免费学