2012-05-09 15 views
6

Tengo una pregunta general sobre servicios web y espero que pueda ayudarme a aclarar mi confusión sobre el tema.Servicios web - SOAP vs. "XML sobre HTTP"

Estoy trabajando con un servicio web que el host llama un "XML sobre el servicio HTTP". Afirman que este servicio NO es un servicio SOAP, sin embargo, la respuesta es una respuesta SOAP envolvente. El servicio se invoca actualmente a través de la publicación de formulario HTML; aquí está el formulario HTML y la respuesta:

HTML:

<FORM name=TestForm action=http://intranet/TheWSMethod enctype="text/plain" method="POST"> 
    <TEXTAREA name=Data rows=22 cols=91 type="text" style="position: absolute; left: 78; top: 69; width:752px; height:330px"></TEXTAREA> 
    <INPUT type=xml> 
    <INPUT type=submit value="Transmit"> 
</FORM> 

RESPUESTA - a base de jabón?

<?xml version="1.0" encoding="UTF-8" ?> 
<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <faultcode>soap-env:Server</faultcode> 
    <faultstring>9001</faultstring> 
    <faultactor>/TheWSMethod</faultactor> 
    <detail> ... </detail> 
</soapenv:Fault> 

El anfitrión me dice que no hay ninguna WSDL para este proceso, que es donde comienza mi confusión.

Entonces, ¿mi pregunta es si hay/debería haber un WSDL existente? (es decir, ¿están tirando de mi pierna o no entienden lo que estoy preguntando) o es posible no tener un WSDL para este tipo de servicio?

Respuesta

14

SOAP es solo una especialización de XML a través de HTTP y la respuesta que publicó realmente parece una respuesta SOAP (en realidad, SOAP fault).

Esto parece un gran malentendido, así que no suponga que están tirando de su pierna. Intenta hacer tu pregunta de otra manera.

En cuanto al WSDL, si se trata de un servicio web 100% SOAP, tenga en cuenta que no es obligatorio tener un WSDL para un servicio web SOAP.

Un servicio web es simplemente una aplicación que expone un conjunto de operaciones a través de la red. Para llamar a estas operaciones necesita saber cuál es su nombre, qué parámetros esperan, qué tipos tienen los parámetros, etc., para que sepa cómo construir su client stub.

Esto significa que el servicio web debe estar documentado o de lo contrario no sabría cómo escribir el código que interactúa con el servicio web. Esta documentación puede ser un documento de Word o un PDF y usted puede construir el cliente manualmente a partir de eso (lo que implica escribir mucho código de plomería para ese trozo de cliente suyo) O la documentación podría ser un archivo WSDL que a diferencia de un PDF o El documento de Word se puede alimentar a una herramienta para generar automáticamente el código de plomería.

El WSDL describe el servicio web, y es una buena práctica proporcionarlo, pero el servicio web existe por separado del WSDL.

+1

Gracias por la explicación. Esto ayuda a aclarar gran parte de mi propia confusión. – user891859

1

WSDL es principalmente un localizador del servicio web. Opcionalmente puede generar clases de cliente utilizando alguna herramienta para acceder al servicio web.

Cuestiones relacionadas