He importado un WSDL y lo uso para enviar una solicitud SOAP. Se ve así:Eliminar el espacio de nombres de la solicitud SOAP
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<Calculate xmlns="urn:xx.WSDL.xxxxxWebService">
<ContractdocumentIn>
<AL>
...More XML...
El problema es la parte xmlns="urn:xx.WSDL.xxxxxWebService"
en el elemento Calcular. El servicio web no puede aceptar esto. El servicio web no le gustan los espacios de nombres como este ...
Usando SoapUI me encontré con esta solicitud a funcionar muy bien:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:col="http://example.com.service.xxx/">
<SOAP-ENV:Body>
<col:Calculate>
<ContractdocumentIn>
<AL>
...More XML...
Así que, ¿cómo cambio la solicitud de la primera a la segunda versión? (Sin usar trucos sucios!)
(volver a importar no es un problema si esto resultaría en el formato de solicitud adecuada.)
Una vez más: no hay trucos sucios permitidos, como la piratería de la corriente de petición de modificarlo !
Y aunque no he probado completamente, parece que C#/VS2010 y Delphi 2010 también son incapaces de utilizar el servicio web que estoy tratando de llamar. Un servicio web que parece estar escrito en Java. SoapUI está escrito en Java, por lo que tenemos un cliente Java que habla con un servicio Java, que parece funcionar bien. ¿Pero algún otro cliente?
De todos modos, es hora de agregar dos etiquetas más: "Java", ya que es un servicio de Java, y "vs2010" porque .NET tampoco le gusta este servicio.
Y estaba a punto de escribir un borrador sobre este servicio en .NET, con la esperanza de que funcione ... No es así. Entonces este es un error muy serio, posiblemente un defecto de Java ...
Buena suerte. Tuve que recurrir a trucos sucios. –
Sí, lo sé. Probablemente pueda resolverlo usando trucos sucios, pero la gerencia no está de acuerdo con eso. Entonces el código necesita estar limpio. –
El código SOAP proporciona ganchos para que pueda examinar el XML que se está enviando y modificarlo si es necesario. Es compatible con la manipulación manual de forma explícita. Y el código estaría allí, nada "sucio" sobre la manipulación posterior a la compilación. Puede que no sea tan bueno como automático, pero nadie debería preocuparse por eso. – mj2008