zoukankan      html  css  js  c++  java
  • php curl xml传输和转换

      1 <?php
      2 
      3 /**
      4  * API
      5  * User: sgfoot
      6  * Date: 2017/3/20
      7  * Time: 18:05
      8  */
      9 class apiCurl
     10 {
     11     private $config = array(
     12         'key'     => '7D86A79BA5C4C278E5264D5E910B3A64',
     13     );
     14     public function execute($url, $params)
     15     {
     16         $baseParams = $this->getParams();
     17         $apiPrams = array_merge($baseParams, $params);
     18         $apiPrams['sign'] = $this->getSign($apiPrams);
     19         $xml = $this->arrayToXml($apiPrams);
     20         $xml_result = Cpost($url, $xml);
     21         $result = $this->xmlToArray($xml_result);
     22         return $result;
     23     }
     24 
     25     /**
     26      * 获取基础参数
     27      * @author: wzl
     28      * @date: 2017
     29      * @return array
     30      */
     31     protected function getParams()
     32     {
     33         $params = array(
     34             'nonce_str' => $this->getNonce(),
     35             'sign_type' => 'MD5',
     36         );
     37         return $params;
     38     }
     39 
     40     /**
     41      *    作用:生成签名
     42      */
     43     protected function getSign($Obj)
     44     {
     45         foreach ($Obj as $k => $v) {
     46             $Parameters[$k] = $v;
     47         }
     48         //签名步骤一:按字典序排序参数
     49         ksort($Parameters);
     50         $String = $this->formatBizQueryParaMap($Parameters, false);
     51         //echo '【string1】'.$String.'</br>';
     52         //签名步骤二:在string后加入KEY
     53         $String = $String . "&key=" . $this->config['key'];
     54         //echo "【string2】".$String."</br>";
     55         //签名步骤三:MD5加密
     56         $String = md5($String);
     57         //echo "【string3】 ".$String."</br>";
     58         //签名步骤四:所有字符转为大写
     59         $result_ = strtoupper($String);
     60         //echo "【result】 ".$result_."</br>";
     61         return $result_;
     62     }
     63 
     64     /**
     65      *    作用:格式化参数,签名过程需要使用
     66      */
     67     protected function formatBizQueryParaMap($paraMap, $urlencode)
     68     {
     69         $buff = "";
     70         ksort($paraMap);
     71         foreach ($paraMap as $k => $v) {
     72             if ($urlencode) {
     73                 $v = urlencode($v);
     74             }
     75             $buff .= $k . "=" . $v . "&";
     76         }
     77         $reqPar = '';
     78         if (strlen($buff) > 0) {
     79             $reqPar = substr($buff, 0, strlen($buff) - 1);
     80         }
     81         return $reqPar;
     82     }
     83     /**
     84      *     作用:将xml转为array
     85      */
     86     protected function xmlToArray($xml)
     87     {
     88         //将XML转为array
     89         $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
     90         return $array_data;
     91     }
     92     /**
     93      *     作用:array转xml
     94      */
     95     protected function arrayToXml($arr)
     96     {
     97         $xml = "<xml>";
     98         foreach ($arr as $key=>$val)
     99         {
    100             if (is_numeric($val))
    101             {
    102                 $xml.="<".$key.">".$val."</".$key.">";
    103 
    104             }
    105             else
    106                 $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
    107         }
    108         $xml.="</xml>";
    109         return $xml;
    110     }
    111 }
    View Code
  • 相关阅读:
    查询URL字符串参数
    location 对象
    css3 文字特效
    functionDo
    css3 渐变
    [LeetCode][Java]Peeking Iterator
    [LeetCode][JavaScript]Expression Add Operators
    [LeetCode][JavaScript]Different Ways to Add Parentheses
    [LeetCode][JavaScript]Move Zeroes
    [LeetCode][JavaScript]Binary Tree Postorder Traversal
  • 原文地址:https://www.cnblogs.com/300js/p/6593273.html
Copyright © 2011-2022 走看看