1. 云栖社区>
  2. PHP教程>
  3. 正文

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

作者:用户 来源:互联网 时间:2017-12-01 15:30:46

问题开发服务公众

微信公众号开发---微信请求服务端取值问题 - 摘要: 本文讲的是微信公众号开发---微信请求服务端取值问题, 最近开发了微信公众号,学了一些新东西,在这记录一下,也希望能帮助到别人 public function responseMsg() {// $requestStr = $_REQUEST['mpxml'];

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

    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设置


以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索问题 , 开发 , 服务 公众 ,以便于您获取更多的相关知识。