PHPアプリケーションから特定のユーザーを探すためにWebサービスを使用しようとしています。私はASP.NETでまったく同じWebサービスを成功させて使用しました。PHP 5 SOAPクライアントは、WSDL提供関数が呼び出されたときにNULLを返します。
基本的に、私はPHPのdocのようにすべてを行い、私はASP.NETで(Webサービス自体のために)使用したものと同じメソッド/変数を使用しますが、結果が得られないようです。
関数は(__getFunctionsにリストされている)とanyType
を返す必要があり、私が正しく理解していれば、PHPでmixed
の等価である:
array(1) { [0]=> string(63) "anyType basicSearch(string $sharedSecret, string $searchParams)" }
私はbasicSearchを(呼び出して実行すると)しかし、リターンがNULLと思われます。
basicSearch()は、情報を含むXMLドキュメントを返すことになっています。 ASP.NETでは、私は単純にXmlDocumentに対する応答を投げかけていました。私もPHPでそれを行う必要がありますか? XML文書(SimpleXML、DOMなど)の表現は?
PHPがフォーマットを理解できないため、NULLと表示されますか?
PHPで何か問題が起きていますか?または、Webサービス自体を調べて、その側でデバッグしようとする必要がありますか?
PS:私はPHP 5ライブラリを使用しています。多分ヌー・ソープのような他のライブラリを使用すると助けになるでしょうか?それについてもっとオンラインのdocがあるようです。
更新:動作しないパラメータを渡すために、配列を使用しては
、SOAPは別々の引数を期待しています。 __getLastRequest()を呼び出すと、他のXMLを持たない$ keyと$ reqを連結した文字列を返します。 __getLastResponse()を呼び出すと、空の文字列が返されます。まったく例外はスローされません。 PHPは、私が__getFunctions()を呼び出すときに使用する関数を取得するので、WSDLファイルを解析しても、私が与えた引数をどうすればいいのかわかりません。
ご協力いただければ幸いです。
更新 ':解決策はまだありません。私はうんざりしています...
配列をエコーすると、配列が文字列に変換されるため、常に「配列」が得られます。 print_r()またはvar_dump()を使用してみてください。 –
うん、今私は正しい関数が表示されます。ありがとう、私はそれを実際に知っていて、それを逃した。問題が更新されました。 –
コード例では、クライアントによってスローされる可能性のある例外はチェックされません。そうでない場合は、try/catchを使ってそのチェックを追加することをお勧めします。役立つエラーメッセージが表示される可能性があります。 –