开发者端:发送请求,并接收结果

<?php

//  下面的demo,实现的功能如下:
// 1-开发者需要判断一个用户是否存在,去请求第三方接口。
// 2-与第三方接口的通信,是以xml格式传送数据。开发者把用户信息以xml格式发送给第三方接口
// 3-第三方接口获取开发者的xml数据,通过数据的查询,把结果再以xml的格式发送给开发者。 //首先检测是否支持curl
if (!extension_loaded("curl")) {
trigger_error("对不起,请开启curl功能模块!", E_USER_ERROR);
} //构造xml
$xmldata="<?xml version='1.0' encoding='UTF-8'?><group><name>张三</name><age>22</age></group>"; //初始一个curl会话
$curl = curl_init(); //设置url
curl_setopt($curl, CURLOPT_URL,"http://localhost/demo/dealxml.php"); //设置发送方式:post
curl_setopt($curl, CURLOPT_POST, true); //设置发送数据
curl_setopt($curl, CURLOPT_POSTFIELDS, $xmldata); //TRUE 将curl_exec()获取的信息以字符串返回,而不是直接输出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //执行cURL会话 ( 返回的数据为xml )
$return_xml = curl_exec($curl); //关闭cURL资源,并且释放系统资源
curl_close($curl); //echo $return_xml;
//exit; //禁止引用外部xml实体
libxml_disable_entity_loader(true);
//先把xml转换为simplexml对象,再把simplexml对象转换成 json,再将 json 转换成数组。
$value_array = json_decode(json_encode(simplexml_load_string($return_xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); echo "<pre>";
print_r($value_array);
?>

第三方接口端:接收请求,并返回处理结果

<?php

//接收传送的数据
$fileContent = file_get_contents("php://input"); ### 把xml转换为数组
//禁止引用外部xml实体
libxml_disable_entity_loader(true);
//先把xml转换为simplexml对象,再把simplexml对象转换成 json,再将 json 转换成数组。
$value_array = json_decode(json_encode(simplexml_load_string($fileContent, 'SimpleXMLElement', LIBXML_NOCDATA)), true); ### 获取值,进行业务处理
$name = $value_array['name'];
$age = $value_array['age'];
// 通过查询,判断该用户是否存在 ### 把查询结果添加到数组中
$value_array['result'] = 1; ### 把数组转换为xml格式,返回
$xml = "<?xml version='1.0' encoding='UTF-8'?><group>";
foreach ($value_array as $key=>$val)
{
if (is_numeric($val)){
$xml.="<".$key.">".$val."</".$key.">";
}else{
$xml.="<".$key."><![CDATA[".$val."]]></".$key.">";
}
}
$xml.="</group>"; // echo $xml;
return $xml; ?>

最新文章

  1. 关于li元素嵌套的事儿
  2. UML大战需求分析——阅读笔记04
  3. 100114C
  4. js 所有事件列表
  5. CSS 宝库
  6. solr返回的字段带有中括号问题
  7. SQL联合查询中的关键语法(转)
  8. Android实现全屏显示的方法
  9. lighttpd+fastcgi模块分析
  10. linux 同步备份 rsyncd 相关设置
  11. 核心业务系统数据库平台迁移: Oracle -&gt; MySQL
  12. git学习笔记 (三)
  13. 使用SQL Server 2005数据库管理工具 - 初学者系列 - 学习者系列文章
  14. ip完整验证详情
  15. Unity3d_GUI_2__(能量条的学习)
  16. 51nod 1673 树有几多愁
  17. linux 中 nginx配置
  18. JZOJ 5602.【NOI2018模拟3.26】Cti
  19. MT【253】仿射和蒙日圆
  20. 一 time与datetime模块

热门文章

  1. j2ee项目服务器怎样部署?
  2. centos7中没有安装ifconfig命令的解决方法
  3. 不重新编译php安装配置eAccelerator
  4. TCP三次握手/四次挥手详解
  5. python-运算符
  6. 【推荐】CentOS安装PHP-5.6.4+扩展安装+安全配置+性能配置
  7. 给Eclipse提速的7个技巧
  8. [LeetCode] Sum of Two Integers 两数之和
  9. python cookbook 学习系列(一) python中的装饰器
  10. MVC使用ajax异步刷新时怎样输出从后台中传过来的JSON数据