Возможно, что XML, возвращаемый $client->fetchNews($param);
, не экранирован должным образом - кажется, что в URL-адресе, который показан в сообщении об ошибке, нет экранирования.
Лучше всего проверить, какой именно XML возвращается, включив трассировку и напечатав последний ответ:
$client = new SoapClient(
'https://newsclient.omxgroup.com/wsdl/DisclosureNewsService.wsdl',
array(
'login' => $login,
'password' => $password,
'trace' => 1
));
$param = array('lastPublicationId' => 361825);
try {
$result = $client->fetchNews($param);
}
catch (SoapFault $sf) {
print '<pre>';
// print the exception
print_r($sf);
// print the XML response
print $client->__getLastResponse();
}
Обходной путь (если сервер возвращает недопустимый XML) - использовать код, подобный приведенному выше, чтобы перехватить исключение. Затем вы можете вручную получить возвращенный XML-код (используя __getLastResponse()
) и очистить его самостоятельно (например, с помощью htmlenties или regexp), прежде чем возвращать его и использовать в остальной части приложения.