我做了一個php肥皂客戶端。我在soapcall期間傳遞一個複雜的對象和一個字符串。傳入的對象在java中接收爲null,但傳遞的字符串正確接收。類(userGPSDataVisulization)類具有long(userGPSDataId),int,float和string屬性。它可以是因爲它是從java發送的簡單整數和字符串而不是long和float嗎?PHP SoapClient:傳入的對象在Java中被接收爲NULL
class RetrieveUserGPSDataVisualization {
public $userGPSDataVisulization;
public $StorageMedium='DATABASE';
function RetrieveUserGPSDataVisualization ($userGPSDataVisulization){
$this->userGPSDataVisulization = $userGPSDataVisulization;
}
}
class userGPSDataVisulization {
public $id=0;
public $latitude=0.0;
public $longitude=0.0;
public $speed=0.0;
public $timeStamp='';
public $timeStampStart='';
public $timeStampEnd='';
public $userGPSDataId='0';
public $userDeviceId='0';
function userGPSDataVisulization ($timeStampStart,$timeStampEnd){
$this->timeStampStart = $timeStampStart;
$this->timeStampEnd = $timeStampEnd;
}}
$client = new SoapClient("http://localhost/etc/Layer?WSDL");
//setting dates
$useRGPSDataVisulization = new userGPSDataVisulization ('2014 12 01 00:00:00','2014 12 01 23:59:59');
//populate object
$RetrieveUserGPSDataVisualization=new RetrieveUserGPSDataVisualization($useRGPSDataVisulization);
$params = array(
"RetrieveUserGPSDataVisualization" => $RetrieveUserGPSDataVisualization,
);
var_dump($params);
try{
$response = $client->__soapCall("RetrieveUserGPSDataVisualization", $params);
var_dump($response);
}
catch(Exception $e) {
echo 'Message: ' .$e->getMessage();
}
通過調試我才知道,useRGPSDataVisulization對象爲空Java編寫,但只在PHP中調用的SOAPCall之前,當它顯示了所有的價值。這是由於Java中的長數據類型嗎?
感謝
更新:我已經解決了這個問題 我已填充對象這樣和對象不接收爲NULL。這是另一種調用soap函數的方法。
$useRGPSDataVisulization = $client->RetrieveUserGPSDataVisualization($RetrieveUserGPSDataVisualization);
感謝所有誰回答和引導
感謝您的回覆。 soapcall有兩個參數。一個是函數名,另一個是數組,所以這段代碼不起作用。 soapvar也不返回數組。你能告訴我用SOAP_ENC_OBJECT可以獲得什麼優勢嗎? 謝謝 – shujaat 2014-12-04 03:10:49
哦,我以爲__soapCall是你的功能,我會更新我的代碼。函數名稱是客戶端調用的,並將soap變量傳遞給它。 – Demodave 2014-12-05 15:00:03
看看我如何在這裏擴展肥皂客戶端https://stackoverflow.com/questions/27068476/how-to-access-windows-web-service-in-php/27068539#27068539 – Demodave 2014-12-05 15:05:49