#php #iis-6 #soapserver
#php #iis-6 #soapserver
Вопрос:
спасибо за чтение. У меня возникла большая проблема с использованием класса SoapServer из php.
когда мы выполняем тест, у нас появляется этот ответ, который работает хорошо:
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:WSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:NotificacionClienteResponse>
<NotificacionClienteReturn xsi:type="xsd:string"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<NotificacionCliente>
<RESULTADO>
<CODIGORETORNO>8</CODIGORETORNO>
<DESCRIPCIONRETORNO>Xml incorrecto</DESCRIPCIONRETORNO>
</RESULTADO>
</NotificacionCliente>]]>
</NotificacionClienteReturn>
</ns1:NotificacionClienteResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
но когда мы делаем то же самое, но на другом сервере, мы получаем этот ответ:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:WSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:NotificacionClienteResponse>
<NotificacionClienteReturn xsi:type="xsd:string">amp;<?xml version="1.0" encoding="UTF-8"?amp;>
amp;<NotificacionClienteamp;>
amp;<RESULTADOamp;>
amp;<CODIGORETORNOamp;>8amp;</CODIGORETORNOamp;>
amp;<DESCRIPCIONRETORNOamp;>Xml incorrectoamp;</DESCRIPCIONRETORNOamp;>
amp;</RESULTADOamp;>
amp;</NotificacionClienteamp;>
</NotificacionClienteReturn>
</ns1:NotificacionClienteResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope
как вы можете видеть во втором ответе, есть 3 разные проблемы:
- вместо <и > появляются amp;lt и amp;gt
- в конце xml отсутствует de >
- и xml не отформатирован (я сделал это за вас :))
Информация о сервере:
- тот же wsdl, веб-сервер, php_soap.dll, php.ini
- мы используем iis v6 и php v5.2.9-2
-
php вызывает SoapServer таким образом на обоих серверах:
новый SoapServer($Path, array(‘encoding’=>’ISO-8859-1’))
что ж, любую информацию, которую вы можете сообщить нам, или любую подсказку, которую, по вашему мнению, стоит попробовать, просто скажите … конечно, то же самое, если вам нужна дополнительная информация.
заранее всем вам спасибо!
Комментарии:
1. Пожалуйста, исправьте форматирование, особенно часть кода. Если вы хотите, чтобы другие прочитали это, не усложняйте.
2. Ари, я исправил формат, спасибо!
3. У меня проблема с отсутствием окончания ‘>’ при использовании: Apache / 2.2.22 (Debian) и php 5.4.45-0 deb7u1. Пробовал различные кодировки — не помогло. Если сообщение не длинное (как в большом количестве байт в конверте soap), этого не происходит.