php通过curl发送XML数据,并获取XML数据

时间:2022-09-17 10:12:04

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;
php通过curl发送XML数据,并获取XML数据
php通过curl发送XML数据,并获取XML数据

二、接收xml数据——getXml.php

<?php

//接收传送的数据

$xml = file_get_contents("php://input"); //将xml数据写入文本文件"whm.txt"中

$handle =fopen('whm.txt','w'); fwrite($handle,$xml);
php通过curl发送XML数据,并获取XML数据
php通过curl发送XML数据,并获取XML数据

三、注意事项

  1. 构造xml时一定要注意格式正确,不能有空格等
  2. 一定要定义content-type为xml,要不然默认是text/html

转载请标明原文链接: https://www.jianshu.com/p/7b86546f5300

更多精彩请访问个人博客:https://www.whmblog.cn/

      </div>

php通过curl发送XML数据,并获取XML数据的更多相关文章

  1. 背水一战 Windows 10 &lpar;101&rpar; - 应用间通信&colon; 通过协议打开指定的 app 并传递数据以及获取返回数据&comma; 将本 app 沙盒内的文件共享给其他 app 使用

    [源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...

  2. XML&lpar;php中获取xml文件的方式&sol;ajax获取xml格式的响应数据的方式&rpar;

    1.XML 格式规范: ① 必须有一个根元素 ② 不可有空格.不可以数字或.开头.大小写敏感 ③ 不可交叉嵌套 ④ 属性双引号(浏览器自动修正成双引号了) ⑤ 特殊符号要使用实体 ⑥ 注释和HTML一 ...

  3. 基于NIO的同步非阻塞编程完整案例&comma;客户端发送请求&comma;服务端获取数据并返回给客户端数据&comma;客户端获取返回数据

    这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

  4. volley post非json格式数据并获取json数据

    在使用JsonObjectRequest时无法post非json格式的数据,因而采用StringRequest获取到相应的数据后再转为json格式的数据. //这里的上下文需要讨论 private s ...

  5. 小程序 picker 多列选择器 数据动态获取

    需求是将各校区对应各班级的数据 以两列选择器的方式展示出来,并且可以在选择完成之后记录选结果参数. 校区数据 和 班级数据 分别是两个接口,以 校区 teach_area_id 字段关联 其各班级数据 ...

  6. 微信获取用户数据后台写法,author2&period;0认证

    /* 微信授权接口 */ //1.设置路由 router.get('/wechat/userinfo', function(req, res) { var cb = req.query.cb; //设 ...

  7. LayUI之table数据表格获取行、行高亮等相关操作

    前言 目前LayUI数据表格既美观有不乏一些实用功能.基本上表格应有的操作已经具备,LayUI作者[贤心]肯定是煞费苦心去优化,此处致敬.但是实话实话,如果单纯那数据表格功能来说,EasUI的数据表格 ...

  8. JqGrid 获取所有数据

    jqGrid使用本地数据时,当jqGrid配置的rowNum小于本地总数据量(records属性记录总数据,可以通过records获取到本地总数据量),调用getRowData方法获取到的只是显示的部 ...

  9. curl如何发送json数据?如何发送form数据?python的restfull又该如何获取这些数据?

    1.python使用flask+flask_restfull框架写的api接口,做为服务 2.curl 做为客户端发送数据 from flask import request curl发送json的方 ...

随机推荐

  1. va&lowbar;list使用

    http://www.programfan.com/blog/article.asp?id=41937

  2. 黑色30s高并发IIS设置

    在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...

  3. boost中的智能指针

    进行本地线程管理的 thread_specific_ptr 指针: 可以看这里:http://www.kingofcoders.com/viewNews.php?type=newsCpp&id ...

  4. DOM生成&amp&semi;解析

    开篇注意,由于解析有可能有大文件非常耗时,建议另开一个线程解析也可以不开具体视情况而定     DOM生成 1.拿到Document的工厂实例化 DocumentBuilderFactory df = ...

  5. sql高级篇(一)

    1.select top mysql中: select * from persons limit 5; 相当于oracle中的: select * from persons <=5; 在翻页中经 ...

  6. fdisk 分区及 swap

    使用虚拟机创建挂载点 一,创建 windows 硬盘        创建  

  7. &period;net core跨平台的文件路径

    windows下路径为:"xxxx\\yyyy" linux路径下为:"xxxx/yyyy" 用Path.Combine("xxxx",&q ...

  8. Spring Boot &plus; Spring Cloud 实现权限管理系统 后端篇(十三):系统备份还原

    系统备份还原 在很多时候,我们需要系统数据进行备份还原.我们这里就使用MySql的备份还原命令实现系统备份还原的功能. 新建工程 新建一个maven项目,并添加相关依赖,可以用Spring boot脚 ...

  9. VSCode中怎么改变文件夹的图标

    昨天更新了VSCode后我的文件夹图标莫名其妙的没有了,变成了下图这样 看着真的让我难受的头皮发麻,本来打代码就头发少,难道非要让我变成秃头,不可能不可能,所以我找了找怎么解决 来,各位看官上眼 如图 ...

  10. 一个线上程序bug,由通用补数程序引起

    下游发现接口可用率非100%,马上线上查看,发现数据在有些情况下通用补数的数据是空, 有20%的用户是没有相应偏好等的数据的,需要通用补数来补数,结果通用补数没有数据. 通用补数数据的检查报警时必须要 ...