Quel est l'exemple le plus simple de SOAP utilisant Javascript ?
Pour être aussi utile que possible, la réponse devrait :
Cela ne peut pas être fait avec un simple Javascript à moins que le service web soit sur le même domaine que votre page. Edit : En 2008 et dans IE<10 cela ne peut pas être fait avec un simple Javascript à moins que le service soit sur le même domaine que votre page.
Si le service web se trouve sur un autre domaine [et que vous devez supporter IE<10], vous devrez utiliser une page proxy sur votre propre domaine qui récupérera les résultats et vous les renverra. Si vous n'avez pas besoin du support de l'ancien IE, vous devez ajouter le support CORS à votre service. Dans les deux cas, vous devriez utiliser quelque chose comme la librairie suggérée par Timyates, car vous ne voulez pas avoir à analyser les résultats vous-même.
Si le service web se trouve sur votre propre domaine, n'utilisez pas SOAP. Il n'y a aucune raison valable de le faire. Si le service Web se trouve sur votre propre domaine, modifiez-le de manière à ce qu'il puisse renvoyer du JSON et épargnez vous la peine de traiter tous les problèmes liés à SOAP.
La réponse courte est : Ne faites pas de demandes SOAP à partir de javascript. Utilisez un service web pour demander des données à partir d'un autre domaine, et si vous le faites, analysez les résultats du côté serveur et renvoyez-les sous une forme conviviale pour javascript.
Thomas :
JSON est préféré pour une utilisation frontale parce que c'est du javascript. Il n'y a donc pas de XML à gérer. SOAP est un problème sans l'utilisation d'une bibliothèque pour cette raison. Quelqu'un a mentionné SOAPClient, qui est une bonne bibliothèque, nous avons commencé avec elle pour notre projet. Cependant, elle présentait certaines limitations et nous avons dû en réécrire de grandes parties. Elle a été publiée sous le nom de [SOAPjs][1] et prend en charge le passage d'objets complexes au serveur, et inclut quelques exemples de code proxy pour consommer des services d'autres domaines.
L'exemple le plus simple consisterait à :
<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>
Mais c'est beaucoup de travail sans bibliothèques JavaScript externes.