Comment puis-je envoyer une demande SOAP et recevoir une réponse à l'aide de HTML?

J'aimerais envoyer un numéro à un «serveur» de SOAP (je ne sais pas si je peux l'appeler un serveur, corrigez-moi si je me trompe) et recevez une réponse en utilisant HTML , j'ai rencontré de nombreuses questions avec des réponses Contenant des exemples d'envoi d'une requête XML telle que ci-dessous, mais je n'ai aucune idée de la façon de recevoir et de voir une réponse sur HTML , désolé, je suis nouveau sur SOAP .

PS: Bien sûr, par HTML, je voulais dire JavaScript dans le HTML: P

Serveur: ici

Merci d'avance!

<html> <head> <title>SOAP JavaScript Client Test</title> <script type="text/javascript"> function soap() { var xmlhttp = new XMLHttpRequest(); xmlhttp.open('POST', 'http://192.168.0.251:9080/wsa/wsa1', true); // build SOAP request var sr = '<?xml version="1.0" encoding="utf-8"?>' + '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:services-progress-com:notavailable">' + '<soapenv:Header/>' + '<soapenv:Body>' + '<urn:lnestagio>' + '<urn:vvalor>5</urn:vvalor>' + '</urn:lnestagio>' + '</soapenv:Body>' + '</soapenv:Envelope>'; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4) { if (xmlhttp.status == 200) { alert('done use firebug to see response'); } } } // Send the POST request xmlhttp.setRequestHeader('Content-Type', 'text/xml'); xmlhttp.send(sr); // send request // ... } </script> </head> <body> <form name="Demo" action="" method="post"> <div> <input type="button" value="Soap" onclick="soap();" /> </div> </form> </body> <html> 

Le XML de SOAP à partir de mon serveur

  <wsdl:definitions xmlns:tns="urn:services-progress-com:ys:server" xmlns:S2="urn:services-progress-com:sys:server:Estagio" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:prodata="urn:schemas-progress-com:xml-prodata:0001" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:S1="urn:soap-fault:details" xmlns="http://schemas.xmlsoap.org/wsdl/" name="Estagio" targetNamespace="urn:services-progress-com:sys:server"> <wsdl:documentation> Author=sys, EncodingType=DOC_LITERAL, WSA_Product=10.2B07 - N/A </wsdl:documentation> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" targetNamespace="urn:soap-fault:details"> <element name="FaultDetail"> <complexType> <sequence> <element name="errorMessage" type="xsd:string"/> <element name="requestID" type="xsd:string"/> </sequence> </complexType> </element> </schema> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:services-progress-com:sys:server:Estagio"> <element name="lnestagio"> <complexType> <sequence> <element name="vvalor" nillable="true" type="xsd:decimal"/> <!-- Here I think he gets the number I sent --> </sequence> </complexType> </element> <element name="lnestagioResponse"> <complexType> <sequence> <element name="result" nillable="true" type="xsd:string"/> <element name="vcalc" nillable="true" type="xsd:decimal"/> <!-- And it returns the number multiplied by 2 --> </sequence> </complexType> </element> </schema> </wsdl:types> <wsdl:message name="FaultDetailMessage"> <wsdl:part name="FaultDetail" element="S1:FaultDetail"/> </wsdl:message> <wsdl:message name="Estagio_lnestagio"> <wsdl:part name="parameters" element="S2:lnestagio"/> </wsdl:message> <wsdl:message name="Estagio_lnestagioResponse"> <wsdl:part name="parameters" element="S2:lnestagioResponse"/> </wsdl:message> <wsdl:portType name="EstagioObj"> <wsdl:operation name="lnestagio"> <wsdl:input message="tns:Estagio_lnestagio"/> <wsdl:output message="tns:Estagio_lnestagioResponse"/> <wsdl:fault name="EstagioFault" message="tns:FaultDetailMessage"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="EstagioObj" type="tns:EstagioObj"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="lnestagio"> <soap:operation soapAction="" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="EstagioFault"> <soap:fault name="EstagioFault" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="EstagioService"> <wsdl:port name="EstagioObj" binding="tns:EstagioObj"> <wsdl:documentation/> <soap:address location="http://localhost:9080/wsa/wsa1"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 

Eh bien, un serveur SOAP est conçu pour recevoir des demandes SOAP et envoyer des réponses SOAP.

Étant donné que SOAP est essentiellement XML, au lieu de s'attendre à une réponse HTML du serveur, il serait plus approprié de rechercher un moyen d'analyser le XML de la réponse SOAP et de l'afficher en HTML.

Mais alors que je tape cette réponse, je pense que vous avez mal compris l'objectif d'un serveur SOAP. Il me semble que vous souhaitez afficher la réponse SOAP brute directement au navigateur client. Mais un serveur SOAP n'est pas destiné à fonctionner de cette façon.

Généralement, un serveur SOAP est utilisé par un autre serveur, en lui faisant une requête SOAP, puis en analysant la réponse SOAP. Et ce "autre serveur" peut être, par exemple, un serveur HTTP.

Prenons un exemple. Je veux connaître la météo de ma ville pour demain. Je vais à dummyweatherforecast.com et tapez le nom de ma ville dans le champ de recherche. Mais dummyweatherforecast.com ne stocke pas toutes les prévisions météorologiques par lui-même. Il peut plutôt contacter un serveur SOAP (spécialement conçu pour fournir des prévisions météorologiques) avec une requête SOAP contenant le nom de ma ville. Le serveur SOAP renvoie une réponse SOAP avec différentes informations météorologiques (ensoleillée / nuageuse, température, etc.) et alors dummyweatherforecast.com traite cette réponse SOAP (c'est-à-dire rappel, XML) pour l'afficher au client avec une belle phrase Comme "Il sera ensoleillé demain, avec 86 ° F. Prenez votre maillot de bain!" Ornée d'une magnifique iconographie solaire.

Comme vous le voyez, le client ne sait même pas qu'une communication SOAP est effectuée entre dummyweatherforecast.com et le serveur SOAP. Et comment utiliser SOAP: par les serveurs eux-mêmes, et rarement directement par les clients. C'est ce que nous appelons «services Web», même si ce terme se réfère à un ensemble plus général de technologies utilisées pour faire dialoguer les ordinateurs les uns avec les autres.

J'espère que cela vous a bien éclairé votre esprit.

PS: en passant, le lien que vous donnez pour votre serveur pointe vers une adresse IP non disponible publiquement (192.168 adresses sont destinées aux réseaux privés).