13

次のように SOAP クライアントを作成しました。

$client = new SoapClient("file.wsdl");

そして、API関数を呼び出したいとき

$client->Authenticate("user", "password");

次のエラーが表示されます。

メッセージを逆シリアル化しようとしているときに、フォーマッタが例外をスローしました:

操作「認証」の要求メッセージの本文をデシリアライズ中にエラーが発生しました。名前空間 ' http://schemas.xmlsoap.org/soap/envelope/ 'の終了要素 'Body' が必要です。名前空間「」から要素「param1」が見つかりました。

しかし、配列にパラメーターを渡そうとすると機能しますが、次のエラーが発生します。

["errorMessage"]=>
string(35) "ORA-01008: not all variables bound

私の質問は、PHP のパラメーターを SOAP クライアントに渡すにはどうすればよいですか? それらは配列にある必要がありますか?

4

4 に答える 4

15

パラメータの配列を渡し、パラメータ名を指定する必要があります (これらは wsdl ファイルで見つけることができます)。あなたの場合、結果は次のようになります(パラメーター名がエラーメッセージに基づいている必要があると仮定します)param1param2

$client->Authenticate(array('param1'=>"user", 'param2'=>"password"));
于 2012-08-10T10:27:42.040 に答える
0

それはすべて SOAP サーバーがどのように定義するかに依存します。パラメーターは好きなように文字列と配列にすることができます。あなたの問題は以前は合法ではありませんでした。wsdl ファイルまたは SOAP サーバーを確認してください。

于 2012-08-10T10:34:04.207 に答える
0
   $client = new SoapClient("your wsdl file");
   $stock = "NCR";
   $parameters= array("request"=>$stock);
   $values = $client->someMethod($parameters);
于 2013-03-08T14:28:47.927 に答える