我看过类似的错误,我认为它很可能是由于BOM字符,但说实话,大多数其他编码是在不同的背景下,我只是不理解它,我不熟悉肥皂,只是使用它拉取数据然后在php中格式化。
我的代码很简单:
$activityClient = xpmClient::getModuleInstance('activity', $remoteSessionId, 'xxx.5pmweb.com');
$filter = new stdClass();
$count = 300;
$offset = 0;
$activityList = $activityClient->getList($filter, $offset, $count);
现在服务器错误显示:
> PHP Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in xxx/caching.php:59\nStack trace:\n
\#0 xxx/caching.php(59): SoapClient->__call('getList', Array)\n
\#1 xxx/caching.php(59): xpmClient->getList(Object(stdClass), 0, '371')\n
\#2 /xxx/reports.php(296): include('/xxx/...')\n
\#3 {main}\n thrown in /xxx/caching.php on line 59
report.php
上的第296行是caching.php
文件的包含,该文件的第59行是
$activityList = $activityClient->getList($filter, $offset, $count);
这几个月没有问题,所以我不确定今天发生了什么变化。任何想法如何剥离BOM并仍然将我的数据作为对象获取$activityList
,以便我可以访问这些信息?
edit//
preg替换不起作用,我想这是因为一旦我调用$ activityList,服务器就会发出一个致命的错误并且之后没有处理任何事情,所以我试图在它破坏之后而不是之前修复它。
How would i go about doing __getLastResponse()
我已阅读手册,但不明白如何构建它,我很确定我需要尝试捕获的原因我说preg替换没有工作,但我尝试了一些变化,它没有做任何事情,我很确定结构是错误的,任何指针或想法?
答案 0 :(得分:2)
我不知道为什么BOM会导致这种情况,但如果你想在这里剥离bom,你可以去
function strip_bom( $str ) {
return preg_replace( '/^(\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFE\xFF|\xFF\xFE|\xEF\xBB\xBF)/', "", $str );
}
答案 1 :(得分:0)
您使用的Soap服务器已损坏。您是否手动检查过它?