PHP SoapClient:传递的对象在 Java 中作为 NULL 接收


PHP SoapClient: Object passed is received as NULL in Java

我做了一个php soap客户端。我在肥皂调用期间传递了一个复杂对象和一个字符串。传递的对象在 java 中作为 null 接收,但传递的字符串被正确接收。类(userGPSDataVisulization)类具有长(userGPSDataId),int,float和字符串属性。可能是因为它从 java 作为简单的整数和字符串发送,而不是长整型和浮点数?

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

感谢所有回答和指导的人

尝试传入SOAP_ENC_OBJECT

$struct = new stdClass();
$struct->item1 = $item1; 
$response = $client->RetrieveUserGPSDataVisualization(new SoapVar($struct, SOAP_ENC_OBJECT));

重命名以下内容:

function userGPSDataVisulization ($timeStampStart,$timeStampEnd){

自:

function __construct ($timeStampStart,$timeStampEnd){