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>
PHP 开发 APP 接口 学习笔记与总结 - XML 方式封装通信接口的更多相关文章
- PHP 开发 APP 接口 学习笔记与总结 - JSON 方式封装通信接口
1.通信数据的标准格式 ( JSON ),包括: code:状态码(200,400等) message:提示信息(例如:数据返回成功.邮箱格式错误等) data:返回数据 2.JSON 方式封装通信接 ...
- PHP开发APP接口学习笔记
习要点概述1.APP接口简介 2.封装通信接口方法 3.核心技术 4.APP接口实例 服务器和客户端进行接口数据通信:服务器 -->数据库|缓存 -->调用接口 -->客户端 服务器 ...
- PHP 开发 APP 接口 学习笔记与总结 - Redis 缓存
Redis 可以定期将数据备份到磁盘中(持久化),同时不仅仅支持简单的key/value 类型的数据,同时还提供list,set,hash等数据结构的存储:Memcache 只是简单的key/valu ...
- PHP 开发 APP 接口 学习笔记与总结 - JSON 结合 XML 方式封装通信接口
要求: 1.在一个类中封装多种数据通信方法(JSON,XML),并且只通过一个入口选择需要的数据通信格式 2.客户端开发工程师可以自行选择数据传输格式(GET 方式) response.php < ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [5] 版本设计分析及数据表设计
APP 版本升级以及 APP 演示 ① 版本升级分析以及数据表设计 ② 版本升级接口开发以及 APP 演示 /** * version_upgrade 版本升级信息表 */ CREATE TABLE ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [3] 首页 APP 接口开发方案 ② 读取缓存方式
以静态缓存为例. 修改 file.php line:11 去掉 path 参数(方便),加上缓存时间参数: public function cacheData($k,$v = '',$cacheTim ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [7] APP 错误日志接口
APP 上线以后可能遇到的问题: ① APP 强退 ② 数据加载失败 ③ APP 潜在问题 错误日志需要记录的内容 数据表 error_log 字段: id app_id:app 类别 id did: ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [6] 版本升级接口开发
判定 app 是否需要加密:通过 app 表中的 status 字段来判定,加密的字符串为 app 表中的 key 字段. 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 dat ...
随机推荐
- JavaScript字符串&数字间转换
比较操作符的操作数可以是任意类型.然而,只有数字和字符串才能真正执行边角操作,因此那些不是数字和字符串的操作数都讲进行类型转换,类型转换规则如下: 如果操作数为对象,那么对象转换为原始值:如 ...
- Jquery和雅虎的YQL服务实现天气预报功能!
可以直接使用http://www.tianqi.com/plugin/#tjdm定制天气 很多外部网站都有天气预报功能,对于很多企业内部的门户也需要有天气预报功能,但实现天气预报的功能和方式确有所差异 ...
- DataSet与Xml文件的互相转换
DataSet转换为xml文件 //将DataSet转换为xml文件 private static void ConvertDataSetToXMLFile(DataSet xmlD ...
- Java线程面试题 Top 50
转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...
- struts2文件下载及 <param name="inputName">inputStream</param>的理解
转自:http://blog.csdn.net/wnczwl369/article/details/7483290 转自:http://hi.baidu.com/c2_sun/item/934a542 ...
- SQLServer中临时表与表变量的区别分析(转)
在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永 ...
- C++的那些事:容器和泛型算法
一.顺序容器 1,标准库定义了3种类型的顺序容器:vector.list和deque.它们的差别主要在于访问元素的方式,以及添加或删除元素相关操作运算代价.标准库还提供了三种容器适配器:stack.q ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- ViewPager左右滑动
布局: <android.support.v4.view.ViewPager android:id="@+id/viewpager_main" android:layout_ ...
- js:数据结构笔记5--链表
数组: 其他语言的数组缺陷:添加/删除数组麻烦: js数组的缺点:被实现为对象,效率低: 如果要实现随机访问,数组还是更好的选择: 链表: 结构图: 基本代码: function Node (elem ...