Ich versuche einen Webdienst zu verwenden, um nach bestimmten Benutzern aus meiner PHP-Anwendung zu suchen. Ich habe den gleichen Webservice in ASP.NET mit Erfolg verwendet.PHP 5 SOAP-Client gibt NULL zurück, wenn die WSDL-Funktion aufgerufen wird
Grundsätzlich mache ich alles wie das PHP doc sagt mir, und ich benutze die gleichen Methoden/Variablen, die ich in ASP.NET verwendet (für den Webservice selbst), aber ich kann nicht scheinen, ein Ergebnis zu erhalten.
Die Funktion wird in __getFunctions() aufgeführt und sollte anyType
zurückkehren, was wenn ich das richtig ist das Äquivalent von mixed
in PHP zu verstehen:
array(1) { [0]=> string(63) "anyType basicSearch(string $sharedSecret, string $searchParams)" }
Wenn ich, wie es scheint NULL obwohl nennst basicSearch() zurückkehrt .
basicSearch() soll ein XML-Dokument mit den Informationen zurückgeben. In ASP.NET habe ich die Antwort einfach, glaube ich, an XmlDocument gesendet. Soll ich das auch in PHP machen? Mit welcher Darstellung eines XML-Dokuments (SimpleXML, DOM, etc.)?
Kann es als NULL angezeigt werden, nur weil PHP das Format nicht verstehen kann?
Mache ich etwas falsch in PHP? Oder sollte ich in den Webservice selbst schauen und versuchen, auf dieser Seite zu debuggen?
<?php
$client = new SoapClient($wsdl_url);
echo $client->__getFunctions();
echo "<br />\n";
echo $client->basicSearch($key, $req);
?>
PS: Ich benutze die PHP 5-Bibliothek. Vielleicht hilft eine andere Bibliothek wie Nu-Soap? Es scheint mehr Online-Dokumentation darüber zu geben.
Update:
ein Array mit dem Parameter übergeben funktioniert nicht erwartet SOAP getrennte Argumente. Der Aufruf von __getLastRequest() gibt eine Zeichenfolge zurück, die $ key und $ req mit keinem anderen XML verkettet. Der Aufruf von __getLastResponse() gibt eine leere Zeichenfolge zurück. Es gibt keine Ausnahme. Es scheint, dass PHP nicht weiß, was mit den Argumenten zu tun ist, die ich ihm gebe, obwohl es die WSDL-Datei syntaktisch analysiert hat, da ich die Funktion, die ich benutze, beim Aufruf von __getFunctions() aufrufe.
Jede Hilfe wäre willkommen.
Update ': Noch keine Lösung funktioniert. Ich bin verwirrt ...
Beachten Sie, dass ein Array Echo werden Sie immer geben ‚Array‘, denn das ist, wie ein Array in einen String umwandelt. Versuchen Sie es mit print_r() oder var_dump(). –
Yup, jetzt bekomme ich die korrekte Funktion aufgelistet. Danke, das wusste ich und habe es verpasst. Problem aktualisiert. –
In Ihrem Codebeispiel wird nicht nach Ausnahmen gesucht, die vom Client ausgelöst werden. Haben Sie dies zur Vereinfachung des Beispiels weggelassen? Wenn nicht, würde ich vorschlagen, diese Überprüfung über try/catch hinzuzufügen, da es Ihnen möglicherweise hilfreiche Fehlermeldungen liefert. –