微信公众号开发---微信请求服务端取值问题

最近开发了微信公众号,学了一些新东西,在这记录一下,也希望能帮助到别人

    public function responseMsg()
    {
//        $requestStr = $_REQUEST['mpxml'];  //线下测试放开
        $requestStr = $GLOBALS["HTTP_RAW_POST_DATA"];//上线放开
        if($requestStr=='')$requestStr = file_get_contents("php://input");//上线放开
        $this->Log->output('req', "请求报文" . $requestStr);
        if (!empty($requestStr)) {
            $postObj = simplexml_load_string($requestStr, 'SimpleXMLElement', LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;
            $toUsername = $postObj->ToUserName;
            $msgType = $postObj->MsgType;
            $keyword = trim($postObj->Content);
            $arr = array('fromUsername' => $fromUsername, 'toUsername' => $toUsername, 'msgType' => $msgType,
                'keyword' => $keyword, 'postObj' => $postObj);
            $responseStr = $this->controllers->index($arr);
            $this->Log->output('res', "应答报文" . $responseStr);
            echo $responseStr;
        } else {
            echo '';
            exit;
        }
    }

以上是处理报文的部分代码

$requestStr = $_REQUEST['mpxml']; 
这个不用说了,接受name为mpxml的值

但是在服务端代码上线之后,这样写应该是接受不到微信发送服务端的请求报文(xml格式)的。

$requestStr = $GLOBALS["HTTP_RAW_POST_DATA"];//上线放开
或者
$requestStr = file_get_contents("php://input");//上线放开
都可以接受到微信的请求报文,推荐第二种方法,它给内存带来的压力较小,并且不需要任何特殊的php.int设置


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值