C++ und gSOAP

Was ihr haben müsst
· Ihr habt einen funktionierenden Webservice eingerichtet den ihr zum Test verwenden könnt.
· Mit dem PluginEditor habt ihr ein C++ Projekt erstellt und auch schon getestet das dieses funktioniert



Ladet von http://sourceforge.net/projects/gsoap2/files/gSOAP/ die aktuelle gSOAP-Version runter (2.7.16 stable)
Ihr benötigt aus dem Ordner \gsoap\bin\win32 die wsdl2h.exe und soapcpp2.exe außerdem den Ordner
\gsoap\import und die beiden Dateien \gsoap\stdsoap2.cpp und \gsoap\stdsoap2.h

Startet nun den Webservice…

Führt nun wsdl2h -o calc.h http://localhost:8080/TestWebApplication/CalculatorService?WSDL aus.
Wobei die Adresse die Stelle der WSDL-Datei angibt.
Dadurch wird die Header-Datei anhand der Methoden des WebServices erzeugt.

Danach führt ihr soapcpp2 -i -C –I ../import calc.h aus.

Nun wurden einige Dateien erzeugt:
(Namen natürlich je nach Service abweichend)

Kopiert soapH.h, soapStub.h, calc.h,
CalculatorServicePortBinding.nsmap,
soapCalculatorServicePortBindingProxy.h und stdsoap2.h in
euren include-Projektordner
und soapC.cpp, soapCalucaltorServicePortBindingProxy.cpp
und stdsoap2.cpp in euren src-Projektordner

Fügt die Dateien auch in Visual Studio ein, damit diese mitkompiliert werden.

Ihr braucht dann folgende includes in eurem Code:
#include “soapCalculatorServicePortBindingProxy.h”
#include “CalculatorServicePortBinding.nsmap”

Der Code dazu könnte dann wie folgt ausschauen (Complex-Datatype):
// Proxy besorgen
CalculatorServicePortBindingProxy proxy;
// Parameter anlegen
ns1add *addparam = new ns1add();
addparam->sum1=4;
addparam->sum2=8;
// Response anlegen
ns1addResponse *result = new ns1addResponse();
// Aufruf ausführen
if (proxy.add(addparam,result)==SOAP_OK)
updateModel(MDL16, result->return);
else
updateModel(MDL_16, “Fehler”);

Tags// , , ,
comments powered by Disqus