SoapServer php iis v6 (неверный закрывающий тег)

#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), этого не происходит.