zoukankan      html  css  js  c++  java
  • PHP推送接口

    最近写了一个推送接口的工作需求,来记录一下

    需要传输自定义header头,输出格式和秘钥

    $header= array('Content-Type:application/json','Access-Id:'.$this->ak,'Authorization:'.$sign);//准备自定义header头信息
    $code = $this->http_post($url,json_encode($data),$header);//调用http方法,传入请求地址、json化的数据、以及请求头

    下面是http_post请求方法

    public function http_post(
            $url,
            $post_data=array(),
            $header= '',
            $post = true,
            $timeout=30) 
        {
            $ch = curl_init();  
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在  
            curl_setopt($ch, CURLOPT_URL,$url);  
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  
            // curl_setopt($ch, CURLOPT_HTTPHEADER,header('Content-Type: application/json'));  
            curl_setopt($ch, CURLOPT_POST,$post);  
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);  
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
            curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);  
            $response = curl_exec($ch);  
            curl_close($ch);
            return $response;
        }

    下面是另一个httpget请求方法

    public function httpGet($url,$header) {
            $curl = curl_init();    //初始化一个cURL会话。
            curl_setopt($curl, CURLOPT_TIMEOUT, 100);  //设置cURL允许执行的最长秒数
            curl_setopt($curl, CURLOPT_URL, $url);  //URL地址
            curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);  //禁用后cURL将终止从服务端进行验证
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);  //不验证证书是否存在
            // curl_setopt($curl, CURLOPT_HEADER, FALSE);    //禁止后使用CURL_TIMECOND_IFUNMODSINCE,默认值为CURL_TIMECOND_IFUNMODSINCE
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);  //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出
            $res = curl_exec($curl);  //执行一个cURL会话
            curl_close($curl);  //关闭一个cURL会话
            return $res;
        }

    以上便是一个大体流程。

    tip1:

      二维数组转化为一维数组

    $bee = [];
    foreach ($bookArr as $k => $v) {
       array_push($bee,...$this->getOneZjList($v));
    }

      神奇之处就是那三个.

    tip2:

      数组分页

      

         $count = count($data['chapters']);//先计算总条数
            $num = ceil($count/200);//向上取整,要循环的页数
            echo "本次推送一共".$count."章节,共".$num."页。"."
    ";
            for($i=1; $i<=$num; $i++){
                $page = $i;
                $pagesize = 200;
                $start=($page-1)*$pagesize;//偏移量,当前页-1乘以每页显示条数
    
                echo "从第".$start."条开始"."
    ";
    
                $data['chapters'] = array_slice($bee,$start,$pagesize); //重点在这里,这里是控制每次推的内容
           
                $url = $this->host.'/xxx/push';
                $sign = md5($this->ak.$this->sk);//加密方式
                $header= array('Content-Type:application/json','Access-Id:'.$this->ak,'Authorization:'.$sign);
                $code = $this->http_post($url,json_encode($data),$header);
                $codes =  json_decode($code,true);
                var_dump($code);//输出请求结果
                echo "已推".$page."页"."
    ";
            }
  • 相关阅读:
    struts2 namespace
    struts2 action跳转及传参
    struts2 后缀问题
    MyEclipse 配置多个Tomcat运行
    tomcat 免安装版 内存溢出
    Tomcat安装版 内存溢出
    JSON 数据的两种遍历方式
    Struts2 返回 JSON数据
    Struts2 参数传递的两种模式
    JQuery + Ajax 传递参数
  • 原文地址:https://www.cnblogs.com/chenliuxiao/p/12467962.html
Copyright © 2011-2022 走看看