【发布时间】:2014-12-03 15:05:34
【问题描述】:
我做了一个 php soap 客户端。我在soapcall期间传递了一个复杂的对象和一个字符串。传递的对象在 java 中被接收为 null,但传递的字符串被正确接收。类 (userGPSDataVisulization) 类具有 long (userGPSDataId)、int、float 和 string 属性。难道是因为它是作为简单的整数和字符串从java而不是long和float发送的?
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);
感谢所有回答和指导的人
【问题讨论】:
标签: java php wsdl long-integer soap-client