欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-04-17 17:11:06
...
最近开发了微信公众号,学了一些新东西,在这记录一下,也希望能帮助到别人
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设置

以上就介绍了微信公众号开发---微信请求服务端取值问题,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。