2

添付のコードを実行すると、次のダンプとエラーが発生します。私が混乱しているのは、 $procID が文字列として返されるように見えることですが、もう一度渡そうとするとすぐにオブジェクトですか? 文字列のままにする/文字列のままにするにはどうすればよいですか? ありがとう。

オブジェクト(標準クラス)#2 (1) {
["processId"]=> 文字列(13)
"Genesis114001" } 文字列(311)
"Genesis114001" string(293) "ジェネシス
" キャッチ可能な致命的なエラー: オブジェクトの
クラス stdClass を変換できませんでした
ひもでつなぐ
C:\wamp\www\SugarCE\testSOAPShawn.php
15行目
<?php
set_time_limit(0);
require_once('nusoap.php');
require_once('BenefitSOAP.php');  //WSDL to PHP Classes
$client = new SoapClient('C:\wsdl\BenefitDeterminationProcess_BenefitDialogueServiceSOAP.wsdl', array('trace' => 1));
$procID = $client->start(array("prefix"=>"Genesis"));
$respXML = $client->__getLastResponse();
$requXML = $client->__getLastRequest();
echo "<p/>";
var_dump($procID);
//echo "<p/>";
var_dump($respXML);
//echo "<p/>";
var_dump($requXML);
$exchange = $client->exchangeOptions(array("processId"=>$procID)); //LINE 15
$end = $client->stop(array("processId"=>$procID));
?>
4

1 に答える 1

3

$client->start()メソッドが返すものが何であれ、オブジェクトとして入力されます。->演算子を使用して、オブジェクトのプロパティにアクセスできます。

$procID = $client->start(array("prefix"=>"Genesis"));

...

$exchange = $client->exchangeOptions(array("processId"=>$procID->processId));

これはおそらく配列でしたが、オブジェクトに入力されています。したがって、最終的にはstdClassになります。

これを行う別の(そしておそらくより良い)方法は、リターンを入力することです。そうすれば、後で引数として渡すために新しい配列を作成する必要はありません。

$procID = (array) $client->start(array("prefix"=>"Genesis"));

...

$exchange = $client->exchangeOptions($procID);
$end = $client->stop($procID);
于 2011-02-17T18:09:49.203 に答える