vorhandener PHP-Webservice in einer C++ Anwendung nutzbar?
-
Hallo,
ich kann in das WSDL des PHP-Webservices einsehen.
Nun möchte ich ein C++ Programm schreiben und auf
den Webservice zugreifen. Was brauche ich dafür?Bei Axiscpp können aus dem WSDL Stub- und Skeletion-Klassen
generiert werden. Aber die Funktionsrumpfe in der
automatisch erzeugten cpp-Datei sind leer (??).
Ich nehme an, dass die Funktionalität der Webservice Funktionen
in den leeren Funktionsrümpfen per Hand eingetragen werden muss..
Habe aber keine Einsicht in den Quellcode des Webservices.
Ich möchte Ihn einfach nur nutzen können.Vielen Danke für Eure Mithilfe im Voraus
-
Wird das Programm auf dem Webserver oder doch lokal auf einem Client, also „entfernt“ ausgefuehrt?
-
Der c++ Client ist entfernt.
Der php-Webservice läuft auf einem Apache2 Webserver.
-
Welche Möglichkeiten bestehen im Allgemeinen,
um für einen C++ Client einen vorhandenen Webservice zu nutzen?
-
Nachtrag: unter Linux bitte.
-
Gar keine. Du kannst nur die Webseite von aussen aufrufen, nicht aber den Quelltext von einer PHP-Datei einsehen, solange die PHP-Datei ihren Code nicht beispielsweise als Textdokument zurueckliefert.
-
Auszug aus Wikipedia über Webservices:
"Durch die Verwendung von bereits bestehenden und weit verbreiteten Internet-Standards (HTTP, XML etc.) entsteht eine offene und flexible Architektur, die unabhängig von den verwendeten Plattformen, Programmiersprachen und Protokollen ist. So können beispielsweise Windows-C#-Clients hinter einer Firewall mit Java-Servern, die auf Linux implementiert sind, kommunizieren. Die weit verbreiteten Standard-Protokolle ermöglichen eine Interoperabilität über jegliche Heterogenitäten im Internet hinweg."
-
Guck doch mal in die Dokumentation von Axis. Schon in der Beschreibung auf der Hauptseite steht, dass Skeleton für den Server ist. Da musst du natürlich die Funktionen erstellen. Da du aber schon einen Server hast, brauchst du den Teil nicht. Interessant ist für dich nur der Client und da ist in der Dokumentation ein Biespiel wie es geht: http://ws.apache.org/axis/cpp/clientuser-guide.html
-
@ Tobiking2:
Der Webservice (in PHP geschrieben) steht mir zur Verfügung.
Das WSDL beschreibt den Webservice vollständig.Ein Axis-C++-Server existiert nicht.
Ist dieser zwingend notwendig, um den Webservice nutzen zu können?Beim Erstellen des Axis-C++-Servers (läuft noch nicht, sehr hart
lauffähig zu bringen) fiel mir auf, dass ähnlich wie beim Calculator-Beispiel
(siehe generierte Calculator.cpp) in einer .cpp-Datei leere Funktionsrümpfe
generiert werden. Muss dort die eigentliche Funktionalität des Webservices hinein?
Das wäre sehr schlecht.
-
xyzasdf schrieb:
Ein Axis-C++-Server existiert nicht.
Ist dieser zwingend notwendig, um den Webservice nutzen zu können?Nein, statt des Axis-C++-Servers hast du ja den PHP-Webservice. Du musst dann statt der Calculator.wsdl auch die WSDL von deinem PHP-Webservice nehmen.
Was die leeren Funktionen angeht, weiß ich nicht genau wie es bei Axis für C++ funktioniert. Die Funktionen müssen ja zumindest deklariert sein, sonst kannst du die ja nicht in deinem Code benutzen. Aber Funktionsrümpfe sollte es theoretisch nur beim Server geben, den du nicht brauchst.
-
Das wäre die Ideallösung!
Bist du dir da ganz sicher?Habe die Vermutung, dass die 'Axis C++ Client Stubs'
zur Kommunikation mit dem Webservice 'Axis C++ Server Skeletons'
benötigen.
-
Guck mal ob du den Befehl für das Erstellen der Client Stubs richtig hast bzw. wirklich die client stubs generiest (parameter -sclient). Bei mir werden 2 Dateien (Calculator.cpp und .hpp) erstellt und die Funktionsrümpfe sind alle gefüllt. Lasse ich -sclient weg bekomme ich 7 Dateien wobei die Funktionsrümpfe leer sind.
-
Vielen Dank für deine Mühe Tobiking2!
Bei mir sind die Funktionsrümpfe bei den stubs auch nicht leer.
Aber bei den Skeletons (Server-Seite).
-
habe die Vermutung, dass der Axis-Client die dynamische Bibliothek
(libcalculator.so) auf Server-Seite benötigt um mit dem Webservice
kommunizieren zu können (?).
-
hat jemand Erfahrungen mit Webserive-Clients in C++.
Was empfiehlt sich zur Kommunikation mit dem Webservice?
-
weiß wirklich niemand bescheid?
-
schau dir mal gSOAP an.
-
Verwende nun gsoap. Klappt wunderbar.
Wenn man nur einen Client schreibt, muss kein
gsoap-Server aufgesetzt werden. Die Kommunikation
mit dem php-WebService funktioniert.