| 

.NET C# Java Javascript Exception

4
Hallo, ich muss einen webservice mit php5 aufrufen. Der webservice ist soap-basiert und ich habe eine wsdl-datei (und eine service-url). wie kann ich den service mit php am einfachsten aufrufen? bestimmt gibt es dafür eine empfehlenswerte library. thx
News:
11.01.2011
GuteFrage 103 1 3
3 Antworten
4
PHP5 kann schon SOAP: http://php.net/soap
Aber: "To enable SOAP support, configure PHP with --enable-soap"
Das sollte bei vielen Hostern bereits mit drin sein.

Vielleicht einfach mal ausprobieren mit:
$wsdl = "http://some.domain/path/to.wsdl";
// oder
$wsdl = "/local/path/to.wsdl";
$soap_client = new SoapClient($wsdl);


Ansonsten ginge noch NuSOAP
11.01.2011
DaSpors 4,2k 2 8
DaSpors 4,2k 2 8
2
+1, Mit NuSOAP hab ich schon ein paar Erfahrungen machen können und kann sagen, wenn man es richtig konfiguriert und den Code nicht versaut (gibt keine Fehlermeldung von Compiler oder NuSOAP wenn was falsch ist) dann funktionierts auch. Man sollte sich aber ein wenig mit dem WSDL-Format und SOAP auskennen sonst wird die Fehlersuche schwirig.
Floyd 11.01.2011
2
NuSOAP ist wirklich recht stabil, aber eben auch sehr resourcen-hungrig. Seit wir auf native SOAP Unterstützung umgestellt haben ist Einiges performanter geworden :)
DaSpors 11.01.2011
2
native Implementierungen sind idr. immer besser als gecodetet (wäre auch schlimm wenn nicht :D). Zumal PHP zudem noch eine Script-Sprache ist wo der NuSOAP-Code auch noch erst interpretiert werden muss. Ich find NuSOAP an zwei Stellen beschränkt: Zum einen kann es prinzipbedingt aus der wsdl nicht die entsprechenden proxy-klassen erzeugen (wie es ASP.Net zum beispiel kann) was zu einer Menge Codieraufwand führt. Zum zweitens unterstützt es nur wenige Datentypen.
Floyd 12.01.2011
FULL ACK :)
DaSpors 14.01.2011
0
Ich würd's mit den Soap Klassen des Zend Framework probieren. Die können das alles...

Siehe auch: http://bogdan-albei.blogspot.com/2009/05/quickstart-web-services-with-soap-and.html
04.02.2011
Laph 11 1
0
Wenn Du eine einfache GET-Anforderung senden willst, wird file_get_contents reichen. (Hinweis: Damit kann man auch POST-Requests mit file_get_contents in Verbindung mit stream_context_create senden).

Beispiel:

$ response = file_get_contents ("http://www.webservice.com/soap-service");
Eine andere Methode ist die Verwendung von cURL. Das ist zwar nicht auf allen Systemen verfügbar (sollte aber auf den meisten sein). Hier ist ein Beispiel für eine POST-Anfrage mit curl:

Handle $ ch = ();
curl_setopt ($ ch, CURLOPT_URL "http://www.webservice.com/soap-service');
curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query (array ('foo' => 'bar', 'baz'=> 1)));
curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ ch, CURLOPT_POST, 1);
curl_setopt ($ ch, CURLOPT_HEADER, 0);
$ result = curl_exec ($ ch);


Alternativ kann man, das PEAR-Paket HTTP_Request2 verwenden. Das wird auf allen Systemen funktionieren (mehr Infos auf der Manpage).

Webservices sind mit PHP 5 ziemlich gut unterstützt wenn man als Protokoll SOAP verwendet. Nur gibt es ziemlich viele Arten, einen Web-Service Aufruf zu machen.
25.05.2011

Stelle deine Php-Frage jetzt!