1

asp.net(C#) で記述された SOAP Web サービスを呼び出したいと考えています。実際には、Web メソッドは 1 つの文字列をパラメーターとして取り、出力として何らかの文字列を返します。

クライアント側 (PHP) では、Web サービスにアクセスするためにnusoapを使用しています。

これは、私の Web サービスを呼び出すための php コードです...

<?php

require_once('nusoap/lib/nusoap.php');
$wsdl="http://localhost/suppliers.asmx?WSDL";
$param=array('name'=>'saran');

$client = new soapclient($wsdl,'wsdl');
echo $client->call('ShowSuppliers',$param);
?>  

しかし、このコードを実行すると、echo ステートメントは単純にブラウザーに配列を表示します...

ここで何が問題なのかわかりません...

しかし、私がこのようなブロンカアプローチに従おうとしたとき、それはうまく機能しています...

echo ステートメントを直接使用する代わりに、このように試しました

$result=$client->call('ShowSuppliers',$param);

foreach($result as $key => $value)
{
  echo $value;
}

この二つの違いは何...

この問題から抜け出すために私を導いてください...

4

1 に答える 1

2

$client->call('ShowSuppliers',$param); 配列要素を返すため、配列要素をエコーするたびに、ブラウザーに書き込まれた配列として表示されます。配列を印刷するには、print_r(配列名) または var_dump(配列名); を使用できます。

次のコードでは foreach ループを使用しているため、配列要素をキーと値のペアに解析しています。

call('ShowSuppliers',$param); は使用しないでください。call 関数は廃止されたため、リンクhttp://php.net/manual/en/soapclient.call.phpを参照してください。

代わりに、soapCall 関数を使用してください。リンクhttp://php.net/manual/en/soapclient.soapcall.phpを参照してください。

この関数は非推奨であるため、後で問題が発生する可能性があります。

于 2012-12-31T08:10:28.327 に答える