PHP 开发 APP 接口总结 - XML 方式封装通信接口

1.PHP 生成 XML 数据

① 拼接字符串

② 使用系统类(DomDocument,XMLWriter,SimpleXML)

例1 使用 PHP 系统类中的 DomDocument 类:

<?php
$dom = new DomDocument(‘1.0‘,‘utf-8‘);
$element = $dom->createElement(‘test‘,‘This is a root element‘);
$dom->appendChild($element);
echo $dom->saveXML();

页面输出

This is a root element

查看源代码显示:

<?xml version="1.0" encoding="utf-8"?>
<test>This is a root element</test>

例2 拼接字符串

//修改 http 头信息
header("Content-Type:text/xml");
//xml头信息
$xml = "<?xml version=‘1.0‘ encoding=‘utf-8‘?>\n";
//根节点开始标签
$xml .= "<root>\n";
//code
$xml .= "<code>200</code>\n";
//message
$xml .= "<message>数据返回成功</message>\n";
//data
$xml .= "<data>\n";
$xml .= "<id>1</id>\n";
$xml .= "<name>John</name>\n";
$xml .= "</data>\n";
//根节点结束标签
$xml .= "</root>";

echo $xml;
exit();

页面输出:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<root>
<code>200</code>
<message>数据返回成功</message>
<data>
<id>1</id>
<name>John</name>
</data>
</root>

http 响应头信息:

2.XML 方式封装通信接口

<?php

class Response{
    /**
    * 按 xml 方式输出通信数据
    * @param integer $code 状态码
    * @param string $message 提示信息
    * @param array $data 数据
    * return string
    */
    public static function xml($code,$message,$data){

        if(!is_numeric($code)){
            return ‘‘;
        }

        $result = array(
            ‘code‘ => $code,
            ‘message‘ => $message,
            ‘data‘ => $data
        );

        //修改 http 头信息
        header("Content-Type:text/xml");
        //xml头信息
        $xml = "<?xml version=‘1.0‘ encoding=‘utf-8‘?>";
        //根节点开始标签
        $xml .= "<root>";

        $xml .= self::xmlToEncode($result);

        //根节点结束标签
        $xml .= "</root>";

        echo $xml;
        exit();
    }

    //解析$result至xml
    public static function xmlToEncode($data){
        $xml = $attr = "";
        foreach($data as $k=>$v){
            //如果$k是数字(data(code,message,data中的data)数据里面还含有索引数组),要进行如下判断
            if(is_numeric($k)){
                $attr = "id=‘{$k}‘";
                $k = ‘item ‘;
            }

            $xml .= "<{$k} {$attr}>";
            //如果$v是数组,则递归调用该方法
            if(is_array($v)){
                $xml .= self::xmlToEncode($v);
            }else{
                $xml .= $v;
            }
            $xml .= "</{$k}>";
        }

        return $xml;
    }
}

调用该页面 test.php

$data 第一种情况:

<?php
require ‘response.php‘;

$data = array(
    ‘id‘=>1,
    ‘name‘=>‘Mary‘
);
Response::xml(200,‘数据返回成功‘,$data);

页面输出:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<root>
<code>200</code>
<message>数据返回成功</message>
<data>
<id>1</id>
<name>Mary</name>
</data>
</root>

$data 第二种情况

<?php
require ‘response.php‘;

$data = array(
    ‘id‘=>1,
    ‘name‘=>‘Mary‘,
    ‘type‘=>array(1,3,6) //<0>1</0><1>3</1><2>6</2>  => <item id="0">1</item>...
);

Response::xml(200,‘数据返回成功‘,$data);

页面输出:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<root>
<code>200</code>
<message>数据返回成功</message>
<data>
<id>1</id>
<name>Mary</name>
<type>
<item id="0">1</item>
<item id="1">3</item>
<item id="2">6</item>
</type>
</data>
</root>

$data 第三中情况:

<?php
require ‘response.php‘;

$data = array(
    ‘id‘=>1,
    ‘name‘=>‘Mary‘,
    ‘type‘=>array(‘a‘=>1,‘b‘=>3,‘c‘=>6)
);
Response::xml(200,‘数据返回成功‘,$data);

页面输出:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<root>
<code>200</code>
<message>数据返回成功</message>
<data>
<id>1</id>
<name>Mary</name>
<type>
<a>1</a>
<b>3</b>
<c>6</c>
</type>
</data>
</root>
时间: 2024-10-28 19:28:35

PHP 开发 APP 接口总结 - XML 方式封装通信接口的相关文章

PHP 开发 APP 接口总结 - JSON 方式封装通信接口

1.通信数据的标准格式 ( JSON ),包括: code:状态码(200,400等) message:提示信息(例如:数据返回成功.邮箱格式错误等) data:返回数据 2.JSON 方式封装通信接口 response.php <?php /** * 按json方式输出通信数据 * @param integer $code 状态码 * @param string $message 提示信息 * @param array $data 数据 * return string */ class Res

小蚂蚁学习APP接口开发(1)—— json方式封装通信接口

前段时间,和公司的一个安卓程序员配合开发一款简单的APP,因为第一次写,时间也紧张,总感觉写的不是那么的完美,趁着这段时间好好总结一下经验. 对于APP的请求,服务器返回的数据类型一般是json和xml. xml和json的区别: 可读性方面--xml占优.因为它是有很多个节点组成的,节点的名称可以自定义. 生成数据方面--json占优.在PHP中要生成一条json数据,只需要一个内置函数就可以实现,而xml则需要拼接字符串或者实例化对象才能够实现,所以,json更为简便一些. 传输速度方面--

PHP 开发 APP 接口总结 - JSON 结合 XML 方式封装通信接口

要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php <?php class Response{ const JSON = 'json'; //封装的综合方法,默认的数据类型为json public static function show($code,$message = '',$data,$type = self::JSON){ if(!is_numer

App接口中json方式封装通信接口

1 封装json通信接口的类 2 <?php 3 class Response{ 4 /** 5 * 按json方式输出通信数据 6 * @param integer $code状态码 7 * @param string $message 提示信息 8 * @param array $data数据 9 * return string 10 **/ 11 public static function json($code,$message="",$data=array()){ 12

PHP 开发 APP 接口--XML篇

1.PHP 生成 XML 数据 ① 拼接字符串 ② 使用系统类(DomDocument,XMLWriter,SimpleXML) 例1 使用 PHP 系统类中的 DomDocument 类: <?php $dom = new DomDocument('1.0','utf-8'); $element = $dom->createElement('test','This is a root element'); $dom->appendChild($element); echo $dom-&

php开发app接口

用interface关键字定义,示例: interface video(){ public function getVideos(); public function getCount();//这都是虚拟的方法 } 接口的实现:[接口中给的所有方法都必须在示例中实现] class movie implements video{ public function getVideo(){ //do something } public function getCount(){ //do somethi

PHP开发APP接口(二)

这里将会调用前面博客的数据库连接单例.文件缓存类和开发APP接口(一) [php] view plain copy print? <?php // http://app.com/list.php?page-=1&pagesize=12 require_once('./response.php'); require_once('./file.php'); $file = new File(); $data = $file->cacheData('index_cron_cahce'); i

PHP开发APP接口(三)

封装通信接口数据方法:1.json方式封装数据方法2.xml方式封装数据方法3.综合数据封装方法. json方式:json_encode();该函数只接受utf-8编码的数据:iconv('原始编码','目标编码','变量'):通过此函数转换编码: xml方式php生成xml数据:1>组装字符串2>使用系统类    DomDocument<?php$dom = new DOMDocument('1.0','utf-8');$element = $dom->createElement

xml方式封装数据方法

1.xml方式封装数据方法 2.demo <?php xml方式封装数据方法 /** * [xmlEncode description] * @param [type] $code [description] * @param [type] $message [description] * @param array $data [description] * @return [type] [description] */ public static function xmlEncode($cod