php通过curl发送XML数据,并获取XML数据
php编程中经常会用到用xml格式传送数据,如调用微信等第三方接口经常用到,这里演示下php以curl形式发送xml,并通过服务器接收
一、发送xml数据 —— postXml.php
<?php
// 首先检测是否支持curl
if (!extension_loaded("curl")) {
trigger_error("对不起,请开启curl功能模块!", E_USER_ERROR);
}
// 构造xml数据
$xmlData = "
<xml>
<AppId>wxf8b4f85f3a794e77</AppId>
<ErrorType>1001</ErrorType>
<Description>错误描述</Description>
<AlarmContent>transaction_id=33534453534</AlarmContent>
<TimeStamp>1393860740</TimeStamp>
<AppSignature>f8164781a303f4d5a944a2dfc68411a8c7e4fbea</AppSignature>
<SignMethod>sha1</SignMethod>
</xml>";
$url = 'http://web.whm.com/getXml.php'; //接收xml数据的文件
$ch = curl_init(); // 初始一个curl会话
$timeout = 30; // php运行超时时间,单位秒
curl_setopt($ch, CURLOPT_URL, $url); // 设置url
curl_setopt($ch, CURLOPT_POST, 1); // post 请求
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type:text/xml; charset=utf-8")); // 一定要定义content-type为xml,要不然默认是text/html!
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);//post提交的数据包
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 3); // PHP脚本在成功连接服务器前等待多久,单位秒
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch); // 抓取URL并把它传递给浏览器
// 是否报错
if(curl_errno($ch))
{
print curl_error($ch);
}
curl_close($ch); // //关闭cURL资源,并且释放系统资源
echo $result;

二、接收xml数据——getXml.php
<?php
//接收传送的数据
$xml = file_get_contents("php://input");
//将xml数据写入文本文件"whm.txt"中
$handle =fopen('whm.txt','w');
fwrite($handle,$xml);

三、注意事项
- 构造xml时一定要注意格式正确,不能有空格等
- 一定要定义content-type为xml,要不然默认是text/html
转载请标明原文链接: https://www.jianshu.com/p/7b86546f5300
更多精彩请访问个人博客:https://www.whmblog.cn/
</div>
php通过curl发送XML数据,并获取XML数据的更多相关文章
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
[源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...
- XML(php中获取xml文件的方式/ajax获取xml格式的响应数据的方式)
1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...
- 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据
这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...
- volley post非json格式数据并获取json数据
在使用JsonObjectRequest时无法post非json格式的数据,因而采用StringRequest获取到相应的数据后再转为json格式的数据. //这里的上下文需要讨论 private s ...
- 小程序 picker 多列选择器 数据动态获取
需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数. 校区数据 和 班级数据 分别是两个接口,以 校区 teach_area_id 字段关联 其各班级数据 ...
- 微信获取用户数据后台写法,author2.0认证
/* 微信授权接口 */ //1.设置路由 router.get('/wechat/userinfo', function(req, res) { var cb = req.query.cb; //设 ...
- LayUI之table数据表格获取行、行高亮等相关操作
前言 目前LayUI数据表格既美观有不乏一些实用功能.基本上表格应有的操作已经具备,LayUI作者[贤心]肯定是煞费苦心去优化,此处致敬.但是实话实话,如果单纯那数据表格功能来说,EasUI的数据表格 ...
- JqGrid 获取所有数据
jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...
- curl如何发送json数据?如何发送form数据?python的restfull又该如何获取这些数据?
1.python使用flask+flask_restfull框架写的api接口,做为服务 2.curl 做为客户端发送数据 from flask import request curl发送json的方 ...
随机推荐
- web项目脱敏白名单管理
写在前面 下午没事, 看一下同事写的脱敏白名单管理功能. 所谓的脱敏就是将页面中查询出的信息列表当中的身份证号及手机号等关键信息部分用*号代替.该功能主要思路是新增一个页面用于配置哪些页面以及页面中哪 ...
- (转)Loadrunner教程--常用操做流程
1loadrunner压力测试一般使用流程 1.1loadrunner压力测试原理 本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点.其中固定行为在loadrunner中是通过 ...
- 为什么JDK代码这样写?final ReentrantLock takeLock = this.takeLock
在CopyOnWriteArrayList的源码中有一个细节值得学习,就是在addIfAbsent方法中ReentrantLock的用法,先是将一个这个成员变量this.lock重新赋值给一个局部变量 ...
- Linux内核链表复用实现栈
我们当然可以根据栈的特性,向实现链表一样实现栈.但是,如果能够复用已经经过实践证明的可靠数据结构来实现栈,不是可以更加高效吗? so,今天我们就复用Linux内核链表,实现栈这样的数据结构. 要实现的 ...
- 今天使用Jmeter时遇到的几个问题及解决方法
JDBC Request :Cannot load JDBC driver class 'com.mysql.jdbc.Driver'解决办法 在Jmeter中run JDBC Request时,收到 ...
- Cassandra开发入门文档第三部分(非规范化关系结构、批处理)
非规范化关系结构 第二部分我们讲了复合主键,这可以灵活的解决主从关系,也即是一对多关系,那么多对多关系呢?多对多关系的数据模型应该回答两个问题: 我跟着谁? 谁跟着我? -- 建表,我们发现这里有个不 ...
- [原]使用kubeadm部署kubernetes(一)
####################### 以下为声明 ##################### 在公众号 木子李的菜田 输入关键词: k8s 有系列安装文档 此文档是之前做笔记在 ...
- Centos7安装部署MongoDB教程
安装方式: RPM包安装 安装步骤: 一.下载RPM包 下图是需要注意的事项.其一选择MongoDB的社区版本,默认是企业版本.其二,选中版本后,在下方会出现下载地址,直接复制下载即可 二.安装并查 ...
- 【Spring Boot学习之十】整合Dubbo
环境 eclipse 4.7 jdk 1.8 Spring Boot 1.5.2 参考以下两篇文章,总结的很全面: springboot整合最新版dubbo以及dubbo-admin的安装使用Spri ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...