2019-03-19 14:49:14 3059次浏览 2条回答 1 悬赏 20 金钱

在 Yii 1.1 框架中使用 curl 请求 api 接口返回数据保存到数据库

最佳答案

  • yzg91 发布于 2019-03-19 17:04 举报
    function curl_post_contents($url, $data = array(), $cookiepath = '',$timeout=10){
        $userAgent = 'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)';
        $referer = $url;
        if(!is_array($data) || !$url) return '';
        $post = '';
        foreach($data as $key => $value){
            $post .= $key . '=' . urlencode($value) . '&';
        }
        rtrim($post, '&');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);                //设置访问的url地址
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);        //设置超时
        curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);    //用户访问代理 User-Agent
        curl_setopt($ch, CURLOPT_REFERER, $referer);        //设置 referer
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);        //跟踪301
        curl_setopt($ch, CURLOPT_POST, 1);                  //指定post数据
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);        //添加变量
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath);   //COOKIE的存储路径,返回时保存COOKIE的路径
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        //返回结果
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
    
     function curl_get_contents($url, $timeout = 5)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
    
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        @curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, true);
        curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 86400); // 缓存一天
        $content = curl_exec($ch);
        curl_close($ch);
        return $content;
    }
    
  • 回答于 2019-03-27 11:08 举报

    好东西,虽然我也有了类似的,不过还是能拿来对比参考。Marker

您需要登录后才可以回答。登录 | 立即注册
龘瞾
经理

龘瞾 四川成都

注册时间:2018-12-21
最后登录:2019-11-06
在线时长:37小时20分
  • 粉丝2
  • 金钱1045
  • 威望0
  • 积分1415

热门问题