3

これは、何日も取り組んだ後もうまくいかなかったこの差し迫った問題です。

http://www.tabernus.com/ws/soap/server.php?WSDLで WSDL ファイルが提供されます。

server.php 内で、「GetAuditInformation」メソッドが呼び出されたときに増分されたシリアル番号を返したいと思いました。

だから私はこの単純な関数を一番上に書きました:

 <?php 
 function GetAuditInformation($serialNumber) {
 $serialNumber=$serialNumber +1;
 return $serialNumber;        
 }

 ini_set("soap.wsdl_cache_enabled", "0");
 $server = new SoapServer('wsMRMAudit.wsdl');
 $server->addFunction("GetAuditInformation"); 
 $server->handle();

?>

plumvoice SOAPtester を使用してテストしたところ、WSDL を介してメソッドを取得できました。

http://www.plumvoice.com/soaptester/

しかし、たとえば....1000のシリアル番号を入力すると、1001が返されるはずですが、NULLが返されます。何故ですか?

4

1 に答える 1

3

関数に渡されるパラメーターは数値ではなく、オブジェクトです。関数定義は次のようになります。

function GetAuditInformation($x)
{
    return array('GetAuditInformationResult' => $x->SerialNumber + 1);
}

完全な例として、私のテスト スクリプトも投稿してみましょう。

$s = new SoapClient('http://www.tabernus.com/ws/soap/server.php?WSDL', array('trace'=>true));

var_dump($s->GetAuditInformation(array('SerialNumber' => 1000)));

$req = $s->__getLastRequest();

function GetAuditInformation($x)
{
return array('GetAuditInformationResult' => $x->SerialNumber + 1);
}

$server = new SoapServer('http://www.tabernus.com/ws/soap/server.php?WSDL', array(
    'actor' => 'http://www.tabernus.com/ws/soap/',
    'soap_version' => SOAP_1_2
));
$server->addFunction('GetAuditInformation');

$server->handle($req);
于 2012-05-09T16:04:58.987 に答える