2016-04-28 12 views
0

Ich begann vor kurzem, einige SOAP und REST-Webdienste zu entwickeln. In SOAP-Webdiensten habe ich herausgefunden, dass ich zuerst einen Client entwickeln muss, damit ich den Dienst nutzen kann.Möglichkeiten zum Erstellen von Clients von Soap Web Services

Ich möchte die verschiedenen Möglichkeiten kennen, einen Client für einen Webdienst zu entwickeln.

Ich sehe die Möglichkeiten der Entwicklung eines Clients für SOAP Web Services sind unabhängig von der Web-Service-Implementierung (CXF, AXIS, JAXB). Eine Methode zum Erstellen eines Clients verwendet beispielsweise die Befehlszeile wsimport, die einen Clientcode generiert, indem sie die WSDL als Argument angibt.

Was ist mit anderen Möglichkeiten?

Antwort

1

Um einen SOAP-Webdienst aufzurufen, müssen Sie ihm eine korrekt formatierte SOAP-Nachricht senden, die den Vertrag des Dienstes berücksichtigt. Das ist es!

Also im Grunde um einen Client zu erstellen, müssen Sie nur diese XML-Nachricht erstellen, zum Beispiel this service, können Sie Folgendes tun (Ich nehme an, Java, da Sie die Frage so getaggt - aber es gilt für jede Programmierung Sprache):

1) Verwendung String-Verkettung (dies als Grund ist, wie Sie) erhalten können:

int number1 = 1; 
int number2 = 2; 
String myMessage = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" 
    + "<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>" 
    + " <Add xmlns=\"http://tempuri.org/\">" 
    + "  <intA>" + number1 + "</intA>" 
    + "  <intB>" + number2 + "</intB>" 
    + " </Add>" 
    + " </soap:Body>" 
    + "</soap:Envelope>"; 

dann eine (Grund-) POST that to the service darauf achten, dass sie mit den erforderlichen HTTP-Header zur Verfügung zu stellen (wie SOAPAction, usw.).

2) manuell erstellen Sie ein XML-Dokument zum Senden an den Dienst, etwas wie using SAAJ zum Beispiel.

3) die service WSDL verwenden und ihn an ein Werkzeug (wsimport, wsdl2java, etc.) von einigem Rahmen/Bibliothek (JAX-WS, Axis2, CXF, etc.) einen Client zurück zu erhalten, die den Anruf abstrahiert zu ein einfacher Methodenaufruf, der Java-Objekte aufnimmt und Java-Objekte zurückgibt.

4) Jede andere Methode, die Sie denken können, um die SOAP-Nachricht zu erstellen und senden Sie es als eine POST-Anfrage (Ich sehe Sie die Frage JAXB markiert, das wird auch tun ...).

Das Aufrufen eines SOAP-Webdienstes ist heutzutage so üblich, dass niemand mehr Zeit damit verbringt, einen Client zu erstellen, wenn es Werkzeuge für fast jede Sprache gibt, die aus der WSDL generiert werden können. Es ist Standardcode.

Die Leute wollen nur einen Client, um es in das Projekt zu schieben, um es zu verwenden, und um weiter zu machen wichtigere Sachen in ihrer Anwendung. Deshalb gehen die meisten für Punkt 3).

Ich sehe die Möglichkeiten eines Kunden für SOAP Web Services entwickeln, sind unabhängig von der Web-Service-Implementierung

Ja, können Sie einen Dienst in einer Programmiersprache/Technologie-Stack und den Client in einem anderen haben . Das SOAP-Protokoll ist der gemeinsame Nenner. Respektieren Sie den Protokoll- und Servicevertrag und der Service kann mit jedem Client arbeiten.

Verwandte Themen