0

我看过类似的错误,我认为它最有可能是由于 BOM 字符,但老实说,大多数其他编码都在不同的上下文中,我只是不明白,我对肥皂不太熟悉,只是用它来拉数据然后在 php.ini 中格式化。

我的代码很简单:

$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

第 296行report.php是该文件的包含,该caching.php文件的第 59 行是

$activityList = $activityClient->getList($filter, $offset, $count);

这工作了几个月没有问题,所以我不确定今天发生了什么变化。任何想法如何剥离 BOM 并仍然将我的数据$activityList作为对象放入以便我可以访问信息?

edit//

preg 替换不起作用,我想那是因为一旦我调用 $activityList,服务器就会给出一个致命错误并且在那之后不处理任何东西,所以我试图在它坏掉之后而不是之前修复它。

How would i go about doing __getLastResponse()

我已经阅读了手册但不明白如何构建它,我很确定我需要一个 try catch,因为我说 preg replace 不起作用但我尝试了一些变化并且它什么也没做,我很确定结构是错误的,任何指针或想法?

4

2 回答 2

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 );
}
于 2013-01-14T15:23:23.377 回答
0

您正在使用的 Soap 服务器已损坏。您是否检查过手动尝试调用它?

于 2013-01-15T01:33:15.240 回答