2012-05-09 50 views
3

数日間作業した後にはうまくいかなかったこの緊急の問題があります。PHP SOAPサーバがまったく値を返さない

http://www.tabernus.com/ws/soap/server.php?WSDLは、WSDLファイルを提供する必要があります。

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

だから私は、一番上にこの簡単な関数を書いた:私はplumvoice SOAPtesterを用いて試験し、WSDL経由のメソッドを取得することができた

<?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(); 

?> 

を。

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

しかし、シリアル番号を入力するには、1000年....と言うと、それは、1001を返す必要がありますが、それはNULLを返します。何故ですか?

答えて

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); 
+0

近い...私は内部の「オブジェクト」を得ました"GetAuditInformationResult" - なぜ "オブジェクト?"インクリメントされたシリアル番号が返されます。ありがとう! – netrox

+0

あなたの問題を発見し、答えを更新しました。 –

+0

近づいています...番号を返しましたが、クライアントから値を取得していません...クライアントが私たちに1を送って、2を返すといいのですが、明らかに値が得られていないので、クライアントから。 – netrox

関連する問題