`

微信请求模拟HTTP_RAW_POST_DATA

    博客分类:
  • PHP
 
阅读更多
微信推送给PHP的XML请求,默认是需要从HTTP_RAW_POST_DATA里提取,
本地测试时怎么模拟微信的请求呢?

模拟微信的请求发送XML

<xml>
											 <ToUserName><![CDATA[toUser]]></ToUserName>
											 <FromUserName><![CDATA[fromUser]]></FromUserName> 
											 <CreateTime>1348831860</CreateTime>
											 <MsgType><![CDATA[text]]></MsgType>
											 <Content><![CDATA[this is a test]]></Content>
											 <MsgId>1234567890123456</MsgId>
											 </xml>


代码:

var para = $('#xml').val();

$.ajax({
					url:"weixin/",
					data:para,
					dataType:'text',
					type:'POST',
					contentType:'text/xml',
					success:function(txt){
							$('#response').text(txt);
						}
					});


PHP服务端取得XML字符串的方式:

xml = $GLOBALS["HTTP_RAW_POST_DATA"];

原因:

$_POST:通过 HTTP POST 方法传递的变量组成的数组。是自动全局变量。
$GLOBALS['HTTP_RAW_POST_DATA'] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。
也就是说基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一样的。
但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']来接收,比如 text/xml 或者 soap 等等。
分享到:
评论

相关推荐

    PHP微信开发之微信消息自动回复下所遇到的坑

    疑问一:为何使用$GLOBALS[“HTTP_RAW_POST_DATA”]保存POST过来的数据,而非$_POST数组? 回答: POST只能保存标准的数据类型,对于XML、SOAP或Application/Octet-steam之类的内容则无法解析。 而$GLOBALS[...

    php版微信返回用户text输入的方法

    // $PostData = $HTTP_RAW_POST_DATA; $PostData = file_get_contents&#40;"php://input"&#41;; //判断POST是否为空 if(!$PostData){ echo "wrong input!"; exit(0); } //解析XML字符串 $xmlObj = simplexml_load_...

    微信小程序前端解密获取手机号

    const rawData = serverRes.data.rawData; // 在服务器成功返回解密信息后,前端解密手机号 const phoneInfo = wx.decryptData(encryptedData, sessionKey, iv, rawData); console.log(phoneInfo.phoneNumber);...

    wx_sampie.php

    接收微信公众平台发送过来的用户消息,该消息数据结构为XML,不是php默认的识别数据类型,因此这里用了$GLOBALS['HTTP_RAW_POST_DATA']来接收,同时赋值给了$postStr if (!empty($postStr)) 判断$postStr是否为空,...

    php微信公众号开发之简答题

    本文实例为大家分享了php微信公众号开发简答题的具体代码,供大家参考,具体内容如下 简答题 array(“第5页 第1个字” =&gt; “王”,”第8页 第1个字” =&gt; “李”,”第30... $postStr = $GLOBALS[HTTP_RAW_POST_DATA];

    微信开发源码

    HTTP RAW POST DATA&quot;]; extract post data if empty $postStr { $postObj simplexml load string $postStr &quot;SimpleXMLElement&quot; LIBXML NOCDATA ; $RX TYPE trim $postObj &gt;MsgType ; ...

    php微信公众号开发之答题连闯三关

    本文实例为大家分享了php微信公众号开发之答题闯关的具体代码,供大家参考,具体内容如下 连闯三关 implode( “,” ,array) 数组变字符串 数组无法保存到数据库中去 ... $postStr = $GLOBALS["HTTP_RAW_POST_DATA

    php版微信开发之接收消息,自动判断及回复相应消息的方法

    本文实例讲述了php版微信开发之接收消息,自动判断及回复相应消息的方法。分享给大家供大家参考,具体如下: 微信的api现在己经强大到...$data = $GLOBALS[HTTP_RAW_POST_DATA]; if (!emptyempty($data)) {//接收消息

    微信公众号生成新浪短网址的实现(快速生成)

    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj-&gt;FromUse

    微信支付开发交易通知实例

    - 获取全局的HTTP_RAW_POST_DATA,这通常包含了微信支付的XML通知数据。 - 检查GET参数是否存在,若存在则返回"success"作为响应。 - 日志文件大小控制,当超过100KB时删除旧文件并创建新的日志文件。 在实际应用中...

    PHP获取POST数据的几种方法汇总

    $HTTP_RAW_POST_DATA变量用于存储POST请求中未被PHP识别的原始数据。这包括那些Content-Type不是application/x-www-form-urlencoded或multipart/form-data的数据,如text/xml或soap等。这个变量仅在碰到未识别MIME...

    微信支付开发告警通知实例

    在这个示例中,`HTTP_RAW_POST_DATA` 是PHP用来获取POST请求原始数据的全局变量,`simplexml_load_string` 函数则用于将XML字符串转换为PHP对象,方便后续处理。然后,`logger` 函数记录了错误信息,以供排查问题。 ...

    基于OpenCart 开发支付宝,财付通,微信支付参数错误问题

    开发者应使用PHP的$HTTP_RAW_POST_DATA变量或者file_get_contents("php://input")来获取原始的数据流内容。这样,SDK就能正确处理回调数据。 5. 移动端设备支付问题: 当PC浏览器使用iOS设备访问支付宝时,系统会...

    PHP后台实现微信小程序登录

    $rawData = Request::instance()-&gt;post('rawData'); $signature2 = sha1($rawData . $session_key); if ($signature != $signature2) { return json(['code' =&gt; 500, 'msg' =&gt; '数据签名验证失败!']); } // ...

    微信小程序支付功能 php后台对接完整代码分享

    $xml = $GLOBALS['HTTP_RAW_POST_DATA']; $WxPayData = new \WxPayDataBase(); $result = $WxPayData-&gt;FromXml($xml); if ($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS') { //...

    PHP实现接收二进制流转换成图片的方法

    分享给大家供大家参考,具体如下: ... &lt;?.../** * 图片类 * @version 1.0 ...* 因此,对型如text/xml 或者 soap 或者 application/octet-stream 之类的内容无法解析,...* 故保留原型,交给$GLOBALS['HTTP_RAW_POST_DATA']

    NodeJS实现微信公众号关注后自动回复功能

     1 处理POST类型的控制逻辑,接收XML的数据包;  2 解析XML数据包(获得数据包的消息类型或者是事件类型);  3 拼装我们定义好的消息;  4 包装成XML格式;  5 在5秒内返回回去 二 代码实操  本节代码参照上...

    视音频最经典名著 Video Demystified

    Video Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Digital Video . . . . . . . . . . . . . . . . . ....

Global site tag (gtag.js) - Google Analytics