微信公众号(订阅号)开发为何接收为NULL?
jasinyip
由 jasinyip
发布于 2014年07月07日
无人欣赏。
刚刚通过示例代码验证了开发者身份,微信公众号开发中心有URL和Token,我现在想测试一下消息接收接口。我写了以下代码:
<?php
$wechatObj = new wechat();
$wechatObj->responseMsg();
class wechat {
public function responseMsg() {
//---------- 接 收 数 据 ---------- //
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据
//!!!!!!!!!!!!!!!!!!!!!!!!
var_dump($postStr);//此入输出为NULL
//!!!!!!!!!!!!!!!!!!!!!!!!
//用SimpleXML解析POST过来的XML数据
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
var_dump($postObj);
$fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID)
$toUsername = $postObj->ToUserName; //获取接收方账号
$keyword = trim($postObj->Content); //获取消息内容
$time = time(); //获取当前时间戳
//---------- 返 回 数 据 ---------- //
//返回消息模板
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>";
$msgType = "text"; //消息类型
$contentStr = '我收到你的信息啦亲!'; //返回消息内容
//格式化消息模板
$resultStr = sprintf($textTpl,$fromUsername,$toUsername,
$time,$msgType,$contentStr);
echo $resultStr; //输出结果
}
}
?>
这段代码的主要作用是用户回复任意内容,系统自动会返回"我收到你的信息啦亲!",但是从第一步就出问题了, $GLOBALS["HTTPRAWPOST_DATA"]返回来的值是居然是NULL,这是我代码哪里出问题了吗?
共5条回复
楼长
·
callmewhy
回复于 2014年07月13日
额友情提醒一下,github有个挺好用的SDK:wechat-php-sdk,封装了基本的消息接受和发送。
如果是自己开发可以参考它的PHP文件
3楼
·
4楼
·
tolerious
回复于 2015年09月29日
艾马、PHP、、
5楼
·
qbuer
回复于 2015年10月04日
之前也遇到一个奇葩问题,微信获取用户名功能在我手机上测试是成功的,但是用同事的手机测试获取到的微信用户名是NULL,折腾了一下午,发现那货的用户名就是NULL...它已经被我打死了.
相关帖子
相关新闻
- SailPoint如何使用Anthropic的Claude在Amazon Bedrock上自动生成用于SaaS连接器的TypeScript代码 | Amazon Web Services
- 自服务机器学习与关系深度学习
- 如何使用语义路由器和 LLM 工具构建 AI 代理 - 新堆栈
- ChatGPT o1-preview 在代码生成方面表现出色
- 人工智能(AI)投资者准备迎接新的首次公开募股 | 东方财富网注意:原文中"The Motley Fool"是一个特定的网站名称或专栏名,未提供具体中文译名,因此保留了英文原名。如果需要进一步翻译或解释,请告知。但是根据指示只输出翻译结果且没有实际内容需翻译的情况下,则直接给出原文:人工智能(AI)投资者准备迎接新的首次公开募股 | The Motley Fool