Проблема с мылом — исключение SoapFault: [Клиент] выглядит так, как будто мы не получили XML-документ

Я просмотрел подобные ошибки, и я думаю, что это, скорее всего, связано с символом спецификации, но, честно говоря, большая часть другого кодирования находится в другом контексте, и я просто не понимаю этого, я не очень знаком с мылом и просто использую его, чтобы вытащить данные, затем отформатируйте их в 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

Строка 296 на report.php является включением для файла caching.php, строка 59 этого файла

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

Это работало в течение нескольких месяцев без проблем, поэтому я не уверен, что изменилось сегодня. Любые идеи, как разделить спецификацию и по-прежнему получать мои данные в $activityList как объект, чтобы я мог получить доступ к информации?

edit//

Замена preg не работает, я думаю, это потому, что как только я вызываю $activityList, сервер выдает фатальную ошибку и ничего не обрабатывает после этого, поэтому я пытаюсь исправить это ПОСЛЕ того, как он сломался, а не раньше.

How would i go about doing __getLastResponse()

Я читал руководство, но не понимаю, как его структурировать, я почти уверен, что мне нужно попробовать catch по причинам, по которым я сказал, что замена preg не работает, но я попробовал несколько вариантов, и это ничего не делает, я почти уверен, что структура неверна, любые указатели или идеи?


person user1547410    schedule 14.01.2013    source источник


Ответы (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 );
}
person Esailija    schedule 14.01.2013
comment
спасибо за этот код, я уверен, что он пригодится, но поскольку мой сервер умирает после запуска $activityList, у него нет возможности запустить его, см. выше дополнительный вопрос и спасибо за ваш ответ - person user1547410; 15.01.2013

Используемый вами сервер Soap неисправен. Вы проверяли вручную, пытаясь вызвать его?

person Sven    schedule 15.01.2013