在做数据接口时,我们通常要获取第三方数据接口或者给第三方提供数据接口,而这些数据格式通常是以XML或者JSON格式传输,本文将介绍如何使用PHP生成XML格式数据供第三方调用以及如何获取第三方提供的XML数据。
php生成接口通信数据
- /**
- * 生成接口数据格式
- */
- class Response{
- /**
- * [show 按综合方式输出数据]
- * @param [int] $code [状态码]
- * @param [string] $message [提示信息]
- * @param array $data [数据]
- * @param [string] $type [类型]
- * @return [string] [返回值]
- */
- public static function show($code, $message, $data = array(),$type = ''){
- if(!is_numeric($code)){
- return '';
- }
- $result = array(
- 'code' => $code,
- 'message' => $message,
- 'data' => $data
- );
- if($type == 'json'){
- return self::json($code, $message, $data);
- }elseif($type == 'xml'){
- return self::xml($code, $message, $data);
- }else{
- //TODO
- }
- }
- /**
- * [json 按json方式输出数据]
- * @param [int] $code [状态码]
- * @param [string] $message [提示信息]
- * @param [array] $data [数据]
- * @return [string] [返回值]
- */
- public static function json($code, $message, $data = array()){
- if(!is_numeric($code)){
- return '';
- }
- $result = array(
- 'code' => $code,
- 'message' => $message,
- 'data' => $data
- );
- $result = json_encode($result);
- return $result;
- }
- /**
- * [xml 按xml格式生成数据]
- * @param [int] $code [状态码]
- * @param [string] $message [提示信息]
- * @param array $data [数据]
- * @return [string] [返回值]
- */
- public static function xml($code, $message, $data = array()){
- if(!is_numeric($code)){
- return '';
- }
- $result = array(
- 'code' => $code,
- 'message' => $message,
- 'data' => $data
- );
- header("Content-Type:text/xml");
- $xml = "<?xml version='1.0' encoding='UTF-8'?>/n";
- $xml .= "<root>/n";
- $xml .= self::xmlToEncode($data);
- $xml .= "</root>";
- return $xml;
- }
- public static function xmlToEncode($data){
- $xml = '';
- foreach($data as $key => $value){
- if(is_numeric($key)){
- $attr = "id='{$key}'";
- $key = "item";
- }
- $xml .= "<{$key} {$attr}>/n";
- $xml .= is_array($value) ? self::xmlToEncode($value) : "{$value}/n";
- $xml .= "</{$key}>/n";
- }
- return $xml;
- }
- }
- //测试
- $grade = array("score" => array(70, 95, 70.0, 60, "70"), "name" => array("Zhang San", "Li Si", "Wang Wu", "Zhao Liu", "TianQi"));
- $response = new Response();
- $result = $response :: show(200,'success',$grade,'json');
- print_r($result);
以上所述就是本文的全部内容了,希望大家能够喜欢。
新闻热点
疑难解答