我看过类似的错误,我认为这很可能是由于BOM字符,但说实话,大多数其他编码是在不同的上下文中,我只是不理解它,我不熟悉soap,只是用它来提取数据,然后在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 replace不工作,我猜那是因为一旦我调用$activityList服务器给出了一个致命的错误,之后不处理任何事情,所以我试图修复它后,它打破了,而不是之前。
How would i go about doing __getLastResponse()
我读了手册,但不明白如何结构它,我很确定我需要一个尝试捕捉的原因,我说怀孕取代不工作,但我尝试了一些变化,它什么也不做,我很确定结构是错误的,任何指针或想法?
我不知道为什么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 );
}
您正在使用的Soap服务器坏了。您是否检查过手动呼叫它?