¿Es posible ver si un servicio web usa SOAP 1.1 o 1.2, según la información del WSDL?¿Puede un WSDL indicar la versión SOAP (1.1 o 1.2) del servicio web?
Respuesta
SOAP 1.1 utiliza espacio de nombres http://schemas.xmlsoap.org/wsdl/soap/
SOAP 1.2 utiliza espacio de nombres http://schemas.xmlsoap.org/wsdl/soap12/
el WSDL es capaz de definir las operaciones bajo jabón 1,1 y jabón 1.2 al mismo tiempo en el mismo WSDL. Eso es útil si necesita evolucionar su wsdl para admitir una nueva funcionalidad que requiera jabón 1.2 (por ejemplo, MTOM), en este caso no necesita crear un nuevo servicio sino simplemente evolucionar el original.
Sí, normalmente puede ver qué versión de SOAP es compatible con WSDL.
Eche un vistazo a Demo web service WSDL. Tiene una referencia al espacio de nombres soap12 que indica que es compatible con SOAP 1.2. Si eso no existiera, probablemente estaría seguro si el servicio solo admitiera SOAP 1.1.
La referencia del espacio de nombres soap12 es un buen indicador. Pero si falta, todavía puede ser un servicio web SOAP 1.2: el WSDL de ejemplo en http://en.wikipedia.org/wiki/Web_Services_Description_Language als no tiene esta referencia, pero tal vez contenga algo más que es típico de SOAP 1.2? – mjn
He encontrado esta página
http://schemas.xmlsoap.org/wsdl/soap12/soap12WSDL.htm
que dice que SOAP 1.2 utiliza el nuevo espacio de nombres http://schemas.xmlsoap.org/wsdl/soap12/
Es en el 'WSDL 1.1 extensión de encuadernación para SOAP 1.1'.
Se ha encontrado el atributo de transporte en binding-element que nos dice que este es el enlace WSDL 1.1 para el enlace HTTP de SOAP 1.1.
ex.
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
En WSDL, si mira la sección Encuadernación, verá claramente que la vinculación de jabón se menciona explícitamente si el servicio utiliza jabón 1.2. consulte la muestra a continuación.
<binding name="EmployeeServiceImplPortBinding" type="tns:EmployeeServiceImpl">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="findEmployeeById">
<soap12:operation soapAction=""/>
<input><soap12:body use="literal"/></input>
<output><soap12:body use="literal"/></output>
</operation><operation name="create">
<soap12:operation soapAction=""/>
<input><soap12:body use="literal"/></input>
<output><soap12:body use="literal"/></output>
</operation>
</binding>
si el servicio web utiliza soap 1.1, no definirá explícitamente ninguna versión de jabón en el archivo WSDL en la sección de enlace. consulte la muestra a continuación.
<binding name="EmployeeServiceImplPortBinding" type="tns:EmployeeServiceImpl">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="findEmployeeById">
<soap:operation soapAction=""/>
<input><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></input>
<output><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></output>
</operation><operation name="create">
<soap:operation soapAction=""/>
<input><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></input>
<output><soap:body use="literal" namespace="http://jaxb.ws.jax.samples.chathurangaonline.com/"/></output>
</operation>
</binding>
cómo determinar la versión de SOAP del mensaje SOAP?
pero recuerde que esta no es una forma muy recomendable de determinar la versión de jabón que utilizan sus servicios web. la versión del mensaje de jabón se puede determinar utilizando una de las siguientes formas.
1. comprobar el espacio de nombres del mensaje SOAP
SOAP 1.1 namespace : http://schemas.xmlsoap.org/soap/envelope
SOAP 1.2 namespace : http://www.w3.org/2003/05/soap-envelope
2. comprobar la información de enlace de transporte (información del encabezado HTTP) del mensaje de jabón
de SOAP 1.1: el usuario text/xml para el Contexto-Tipo
POST /MyService HTTP/1.1
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
SOAP 1.2: usuario de la aplicación/jabón + xml para el Contexto-Tipo
POST /MyService HTTP/1.1
Content-Type: application/soap+xml; charset="utf-8"
Content-Length: xxx
SOAPAction: "urn:uuid:myaction"
3. utilizando la información de error de SOAP
La estructura de un mensaje de error SOAP entre las dos versiones es diferente.
La primera parte de su respuesta podría usar cierta información adicional: el "soap12" es el prefijo del espacio de nombres, no el espacio de nombres en sí. Debe verificar a qué se resuelve el prefijo "soap12" y qué versión de jabón especifica. Alguien podría usar soap12 como prefijo pero señalar el URI del espacio de nombres soap11. – csadler
- 1. Servicio WCF SOAP 1.2 esperando contenido SOAP 1.1 tipo
- 2. ¿Servicio web REST WSDL?
- 3. Servicio web de Perfect Soap (Wsdl) en php
- 4. WCF and Soap 1.1
- 5. Cliente de servicio WSDL/SOAP Android
- 6. soap 1.2 android Proporcione una acción de jabon válida
- 7. Cómo llamar a un servicio web sin wsdl en .net
- 8. SOAP 1.2 sobre SSL + autenticación básica HTTP o WS-Security?
- 9. Posible desajuste de la versión de SOAP
- 10. consumir servicio web SOAP
- 11. de SOAP servicio web evolución
- 12. ¿Cómo saber qué versión de django uso? ¿es 1.0, 1.1 o 1.2?
- 13. Llamadas al servicio web SOAP desde Javascript
- 14. SOAP Acción WSDL
- 15. .Net - Servicio web de consumo sin WSDL
- 16. ¿por qué SOAP sin WSDL?
- 17. Consumir el servicio web SOAP en ASP.NET
- 18. ¿Cómo se puede distinguir si se trata de un servicio web SOAP o REST?
- 19. WCF wsdl wsdl: import location, soap: address location tiene el nombre de la máquina?
- 20. WSDL2REST - ¿hay una versión de C#? (convierta SOAP en servicio web RESTful)
- 21. SOAP WSDL matrices asociativas
- 22. Consuma un servicio web SOAP sin depender de la aplicación.config
- 23. No se puede hacer referencia al WSDL del servicio web WCF alojado en AppFabric
- 24. No se puede ejecutar el servicio web Perl usando WSDL :: Generator
- 25. Generar WSDL para el servicio SOAP existente utilizando tráfico capturado
- 26. Generar servicio web a partir de WSDL
- 27. Servicio WSDL para XML simple en lugar de SOAP
- 28. Generación de servicio web a partir del archivo WSDL
- 29. consumir servicio web SOAP utilizando jquery
- 30. cómo generar un archivo WSDL de un servicio web C#
MTOM se puede usar con soap1.1 – GregD