Wie kann ich das senden einer SOAP-Anforderung und eine Antwort zu erhalten, die mit HTML?
Ich würde gerne eine Zahl in ein SEIFE "server"(ich weiß nicht, ob ich anrufen kann es ein server, korrigieren Sie mich, wenn ich falsch Liege) und Sie erhalten eine Antwort mit HTML, ich habe viele Fragen mit Antworten mit Beispielen für das senden einer XML-Anforderung wie unten, aber ich habe keine Idee, wie zu empfangen und eine Antwort auf HTML, sorry ich bin neu auf SEIFE.
P. S.: natürlich mit HTML meinte ich JavaScript in HTML 😛
Server: Hier
Vielen Dank im Voraus!
HTML:
<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>
SOAP-XML von meinem server
<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>
- Anstatt das Rad neu erfinden müssen Sie als mit einer der vorhandenen Bibliotheken? e..g javascriptsoapclient.codeplex.com
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ein SOAP-server ist ausgelegt zum empfangen von SOAP-Anforderungen und das senden von SOAP-Antworten.
Da SEIFE ist im Grunde XML, anstatt zu erwarten, eine HTML-Antwort vom server, dass es angemessener wäre, zu schauen, für die ein Mittelwert zum Parsen der XML der SOAP-Antwort und zeigt Sie in HTML.
Aber ich tippe diese Antwort, ich denke, Sie können missverstanden haben das Ziel, einen SOAP-server. Es scheint mir, dass Sie wollen, um den raw SOAP-Antwort direkt an den client-browser. Aber ein SOAP-server ist nicht gedacht, das es so funktioniert.
In der Regel ein SOAP-server verwendet wird, der von einem anderen server, indem Sie eine SOAP-Anfrage und dann Parsen der SOAP-Antwort. Und diese "andere server" kann sein, zum Beispiel ein HTTP-server.
Nehmen wir ein Beispiel. Ich möchte wissen, die Wettervorhersage für meine Stadt für morgen. Ich gehe zu dummyweatherforecast.com und geben Sie den Namen meiner Stadt in das Suchfeld ein. Aber dummyweatherforecast.com nicht speichern Sie alle Wettervorhersagen von selbst. Kann es wenden Sie sich stattdessen an einen SOAP-server (speziell für die Wetter-Prognosen) mit einer SOAP-Anfrage mit dem Namen meiner Stadt. Der SOAP-server gibt eine SOAP-Antwort mit verschiedenen Informationen zum Wetter (sonnig/bewölkt, Temperatur, etc.) und dann dummyweatherforecast.com Prozesse, die diese SOAP-Antwort (das ist, wie eine Erinnerung, XML) zur Anzeige auf dem client mit einem schönen Satz wie "Es wird sonniger morgen, mit 86°F. Nehmen Sie Ihre Badesachen !", geschmückt mit einer schönen Sonne Ikonographie.
Wie Sie sehen, der Kunde weiß nicht einmal, dass eine SOAP-Kommunikation findet zwischen dummyweatherforecast.com und der SOAP-server. Und dies, wie SEIFE verwendet wird : durch den Server selbst, und nur selten direkt von den Kunden. Dies ist, was wir nennen "web-services", obwohl dieser Begriff bezieht sich auf eine allgemeinere Reihe von Technologien, von Computern zu sprechen, um jede andere.
Ich hoffe, das erhellt Ihren Geist ein wenig.
PS : übrigens, der link, den Sie für Ihren server, um eine IP nicht öffentlich verfügbar (192.168 Adressen sind für private Netze).