¿Cuál es el ejemplo más sencillo de SOAP utilizando Javascript?
Para que sea lo más útil posible, la respuesta debería:
Esto no se puede hacer con javascript directo a menos que el servicio web esté en el mismo dominio que su página. Editar: En 2008 y en IE<10 esto no se puede hacer con javascript directo a menos que el servicio esté en el mismo dominio que su página.
Si el servicio web está en otro dominio [y tienes que soportar IE<10] entonces tendrás que usar una página proxy en tu propio dominio que recupere los resultados y te los devuelva. Si no necesita soporte para el antiguo IE, entonces tendrá que añadir soporte CORS a su servicio. En cualquiera de los dos casos, deberías usar algo como la librería que sugirió timyates porque no quieres tener que analizar los resultados tú mismo.
Si el servicio web está en su propio dominio, no utilice SOAP. No hay una buena razón para hacerlo. Si el servicio web está en tu propio dominio entonces modifícalo para que pueda devolver JSON y ahórrate la molestia de lidiar con todos los problemas que vienen con SOAP.
La respuesta corta es: No haga peticiones SOAP desde javascript. Utiliza un servicio web para solicitar datos de otro dominio, y si lo haces, analiza los resultados en el lado del servidor y devuélvelos en un formato amigable para js.
Thomas:
JSON es preferible para el uso del front-end porque es javascript. Por lo tanto, no tienes que lidiar con XML. SOAP es un dolor sin usar una biblioteca debido a esto. Alguien mencionó SOAPClient, que es una buena biblioteca, empezamos con ella para nuestro proyecto. Sin embargo, tenía algunas limitaciones y tuvimos que reescribir grandes partes de ella. Ha sido publicada como SOAPjs y soporta el paso de objetos complejos al servidor, e incluye algunos ejemplos de código proxy para consumir servicios de otros dominios.
El ejemplo más sencillo consistiría en:
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetInfoByZIP xmlns="http://www.webserviceX.NET">
<USZip>string</USZip>
</GetInfoByZIP>
</soap:Body>
</soap:Envelope>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<GetInfoByZIPResponse xmlns="http://www.webserviceX.NET">
<GetInfoByZIPResult>
<NewDataSet xmlns="">
<Table>
<CITY>...</CITY>
<STATE>...</STATE>
<ZIP>...</ZIP>
<AREA_CODE>...</AREA_CODE>
<TIME_ZONE>...</TIME_ZONE>
</Table>
</NewDataSet>
</GetInfoByZIPResult>
</GetInfoByZIPResponse>
</soap:Body>
</soap:Envelope>
Pero es una gran molestia sin bibliotecas externas de JavaScript.