通過tcpdump抓包,真實傳輸數(shù)據(jù)如下所示
Pragma: no-cache
Content-Length: 334
Content-Type: text/xml
<xml><ToUserName><!></ToUserName>
<FromUserName><!></FromUserName>
<CreateTime>1513155527</CreateTime>
<MsgType><!></MsgType>
<Event><!></Event>
<EventKey><!></EventKey>
<MenuId>430813768</MenuId>
</xml>
但是通過var_dump($message)去打印,只有如下數(shù)據(jù)
array(1) {
=>
array(1) {
["CDATA=>
string(0) ""
}
}
是不是workerman的http解析xml只是解析一部分數(shù)據(jù)的原因?
但是var_dump($GLOBALS)得到的是NULL
我查看了一下Http.php文件,
if ($_SERVER === 'POST') {
if (isset($_SERVER) && $_SERVER === 'multipart/form-data') {
self::parseUploadFiles($http_body, $http_post_boundary);
} else {
parse_str($http_body, $_POST);
// $GLOBALS
$GLOBALS = $GLOBALS = $http_body;
var_dump($GLOBALS);
}
}
打印了一下 var_dump($GLOBALS);,還是顯示有數(shù)據(jù)的,為什么到Event.php中就變成NULL了呢?
我修改了Http.php的代碼,加入xml解析函數(shù)parse,然后在Event.php中通過$message就可以獲取到了
if ($_SERVER === 'POST') {
if (isset($_SERVER) && $_SERVER === 'multipart/form-data') {
self::parseUploadFiles($http_body, $http_post_boundary);
} elseif (isset($_SERVER) && $_SERVER === 'text/xml') {
$_POST = parse($http_body);
//var_dump($_POST);
} else {
parse_str($http_body, $_POST);
// $GLOBALS
$GLOBALS = $GLOBALS = $http_body;
}
}