PHP通过XML报文方式,已第三方接口交互(发送xml,获取XML,并解析xml步骤)

  

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

<?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;

?>
时间: 2024-11-09 22:51:09

PHP通过XML报文方式,已第三方接口交互(发送xml,获取XML,并解析xml步骤)的相关文章

PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)

开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送数据.开发者把用户信息以xml格式发送给第三方接口 // 3-第三方接口获取开发者的xml数据,通过数据的查询,把结果再以xml的格式发送给开发者. //首先检测是否支持curl if (!extension_loaded("curl")) { trigger_error("对不

asp.net后台集成QQ第三方接口含发送微博、带图片微博(有源码)

最近在做项目的时候用到了QQ第三方接口,腾讯提供了JS.安卓.IOS.php的SDK,但是没有C#的SDK.一开始我是在前台直接用JS的SDK做登陆验证,但是做完自己就感觉这样很可笑,JS是暴露给客户端的,那么客户完全可以直接绕过去,进入到你的后台. 所以我在通过登陆验证后回调后台页面,在后台进行合法性验证,防止非法登陆. 原理就是后台通过httpwebrequest操作第三方接口 /// <summary> /// HTTP POST方式请求数据 /// </summary> /

一文读懂低成本的软件对接方式,数据接口生成器应用于医疗软件全解析

如今,以"智慧医疗"为代表的健康信息化建设几乎在国内每一个大中城市上马,并逐步在每一家医院落地.无论是围绕智慧医疗所展开的公卫平台建设.精准医疗.医联体建设.远程医疗等一系列产业链,还是医院内部的信息化升级,其核心基础都必须建立在医疗大数据之上.医疗领域的数据源虽然众多,但医院各种系统的数据库还是最重要的医疗数据来源. 在中国,一家普通医院的软件系统往往有十几个到几十个不等,三甲医院内部信息系统则可能高达上百个.而国内医疗IT市场相关软件厂家多达几千家,国内前20的医疗IT厂商加起来却

java中用SAX方式解析xml文件

SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准.SAX是一种轻量型的方法,不像DOM解析时,把XML文档全部载入内存中,在PC上操作,Dom还有优势,但在手机中端上则无优势,因为手机内存和硬件都比不上PC强.使用 SAX 是比较安全的,并且 Android 提供了一种传统的 SAX 使用方法,以及一个便捷的 SAX 包装器.SAX采用基于事件驱动的处理方式,它将XML文档转换成一系列的事件,由单独的事件处理器来决定如何处理. 在SAX接口中,事件源是org.

JAVA解析XML之SAX方式

JAVA解析XML之SAX方式 SAX解析xml步骤 通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser 创建一个类继承DefaultHandle,重写方法进行业务处理并创建这个类的实例handle 重写DefaultHandle类的方法 startElement方法用来遍历xml文件的开始标签; endEle

通过Dom方式解析xml文件

此项目通过简单的天气情况显示来实现xml文件的解析 1. 搭建环境 1)创建如下图的包.类及文件 2)布局文件的大概样式如下图所示,用到四个TextView控件和一个RadioGroup控件 3)china.xml文件的内容如下 <?xml version="1.0" encoding="UTF-8"?> <china dn="day"> <city cityname="南京" pyName=&q

android 解析XML方式(二)

上一节中,我们使用DOM方式解析xml文档,该方式比较符合我们日常思维方式,容易上手,但是它直接把文档调入内存中,比较耗内存.在这里我们可以用另外一种方式解析xml,这个就是SAX方式. SAX即是:Simple API for XML SAX是基于事件驱动的.当然android的事件机制是基于回调函数的,在用SAX解析xml文档时候,在读取到文档开始和结束标签时候就会回调一个事件,在读取到其他节点与内容时候也会回调一个事件. 既然涉及到事件,就有事件源,事件处理器.在SAX接口中,事件源是or

php服务器开发之 app客户端首页接口开发(一) 概述及方案一:读取数据库方式开发首页接口

本篇博文主要内容:1.简述app客户端首页接口开发的三种方案 2.实例讲解 方案一:读取数据库方式开发首页接口 /**********************************************************************************************************************************/ 方案一:读取数据库方式开发首页接口 1.从数据库获取消息 2.封装数据 3.生成接口数据 适用场景: 数据时效性高的系统

使用第三方DOM解析XML格式文件

在解析XML格式文件的时候,使用SAX解析需要实现好多代理方法,比较难记,也容易出错,现在介绍一种由Google推出的第三方DOM(Document Object Model)来解析XML文件. 首先将该第三方文件拖到工程中.谷歌下载地址:https://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ (注:由于该三方是很久之前的版本,还是基于MRC格式下的代码,所以需要改成ARC兼