|
- <?php
-
- /**
- * Created by PhpStorm.
- * User: Steven
- * Date: 2016/8/12
- * Time: 14:21
- */
- class commonUtils
- {
- static function create($array)
- {
- $xml = "";
- foreach ($array as $k => $v) {
- $xml .= "<" . $k . ">";
- if (is_array($v)) {
- $a = self::create($v);
- $xml .= $a . "</" . $k . ">";
- } else {
- $xml .= $v . "</" . $k . ">";
- }
- }
- return $xml;
- }
-
- static function array_to_xml($array)
- {
- $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
- $xml = $xml . self::create($array);//递归
- return $xml;
-
- }
-
- //发送get参数(链接,参数数组)
- static function send_get($url, $get_data)
- {
- $url_param = http_build_query($get_data);
- $result = file_get_contents($url . "?{$url_param}");
- return $result;
- }
-
- //将xml转换为数组
- static function xml_to_array($xml)
- {
- $ob = simplexml_load_string($xml);
- $json = json_encode($ob);
- $array = json_decode($json, true);
- return $array;
- }
-
- //发送post请求(xml)
- static function xml_post_request($url, $xmlData)
- {
- $header[] = "Content-type: text/xml"; //定义content-type为xml,注意是数组
- $ch = curl_init($url);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
- $response = curl_exec($ch);
- if (curl_errno($ch)) {
- print curl_error($ch);
- }
- curl_close($ch);
- return $response;
- }
-
- /**
- * PHP发送Json对象数据
- *
- * @param $url 请求url
- * @param $jsonStr 发送的json字符串
- * @return array
- */
- static function http_post_json($url, $jsonStr)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json; charset=utf-8',
- 'Content-Length: ' . strlen($jsonStr)
- )
- );
- $response = curl_exec($ch);
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
-
- return array($httpCode, $response);
- }
-
- /**
- * PHP发送xml数据
- *
- * @param $url 请求url
- * @param $xmlStr 发送的xml
- * @return array
- */
- static function http_post_xml($url, $xmlStr)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlStr);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml; charset=utf-8'));
- $response = curl_exec($ch);
- if ($errno = curl_errno($ch)) {
- throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch));
- }
- curl_close($ch); // 关闭URL请求
- return $response; // 返回获取的数据
- }
-
- /**
- * PHP发送数组
- *
- * @param $url 请求url
- * @param $param 发送的数组
- * @return array
- */
- static function httpsPost($url, $param = array())
- {
- $ch = curl_init(); // 初始化一个 cURL 对象
- curl_setopt($ch, CURLOPT_URL, $url); // 设置需要抓取的URL
- curl_setopt($ch, CURLOPT_HEADER, 0); // // 设置header
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。
- // 如果你想PHP去做一个正规的HTTP POST,设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型,多数被HTML表单使用。
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($param)); // 传递一个作为HTTP “POST”操作的所有数据的字符串。//http_build_query:生成 URL-encode 之后的请求字符串
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-type:application/x-www-form-urlencoded;charset=utf-8'
- ));
- $rtn = curl_exec($ch); // 运行cURL,请求网页
- if ($errno = curl_errno($ch)) {
- throw new Exception ('Curl Error(' . $errno . '):' . curl_error($ch));
- }
- curl_close($ch); // 关闭URL请求
- return $rtn; // 返回获取的数据
- }
-
- static function base_xml_encode($data, $encoding = 'utf-8', $root = "root")
- {
- $xml = "<?xml version=\"1.0\" encoding=\"$encoding\"?>\n";
- $xml .= "<$root>";
- $xml .= self::data_to_xml($data);
- $xml .= "</$root>";
- return $xml;
- }
-
- //接受xml数据并转化成数组
- static function getRequestBean()
- {
- $bean = simplexml_load_string(file_get_contents('php://input')); // simplexml_load_string() 函数把 XML 字符串载入对象中。如果失败,则返回 false。
- $request = array();
- foreach ($bean as $key => $value) {
- $request [( string )$key] = ( string )$value;
- }
- return $request;
- }
-
- //接受json数据并转化成数组
- static function getJsonData()
- {
- $bean = file_get_contents('php://input');
- $result = json_decode($bean, true);
- return $result;
- }
-
- //组装XML
- static function data_to_xml($data)
- {
- if (is_object($data)) {
- $data = get_object_vars($data);
- }
- $xml = '';
- foreach ($data as $key => $val) {
- if (is_null($val)) {
- $xml .= "<$key/>\n";
- } else {
- is_numeric($key) && $key = "item";
- $xml .= "<$key>";
- $xml .= (is_array($val) || is_object($val)) ? self::data_to_xml($val) : $val;
- list($key,) = explode(' ', $key);
- $xml .= "</$key>";
- }
- }
- return $xml;
- }
-
- /**
- * 日志方法
- * @param $log
- */
- static function writeLog($log)
- {
- $dir = __DIR__ . "/../Log/";
- if (!is_dir($dir)) {
- mkdir($dir);
- }
- $filename = $dir . date("Y-m-d") . ".log";
- file_put_contents($filename, date("Y-m-d H:i:s") . "\t" . $log . PHP_EOL, FILE_APPEND);
- }
-
- /**
- * 签名验证函数
- * @param $param 需要加密的字符串
- * @param $sign 第三方已经机密好的用来比对的字串
- * @return bool
- */
- static function ValidateSign($param, $sign)
- {
- if (md5($param) == $sign) {
- return true;
- } else {
- return false;
- }
- }
- }
|