简体   繁体   中英

PHP SoapClient: Object passed is received as NULL in Java

I made a php soap client. I am passing a complex object and a string during the soapcall. The object passed is received as null in java but the string passed is received correctly. The class (userGPSDataVisulization) class has long (userGPSDataId), int , float and string attributes. Can it be because it is sent as simple integer and string from java instead of long and 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();
}

Through Debugging I came to know that useRGPSDataVisulization object is null when in java but just before calling soapcall in php it shows all the value. Is this due to long datatype in Java?

Thanks

Update: I have solved this problem I have populated the object like this and the object does not receive as NULL. This is another way to call the soap function.

$useRGPSDataVisulization = $client->RetrieveUserGPSDataVisualization($RetrieveUserGPSDataVisualization);

Thanks to all who answered and guided

Try passing in a SOAP_ENC_OBJECT

$struct = new stdClass();
$struct->item1 = $item1; 

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

Rename the following:

function userGPSDataVisulization ($timeStampStart,$timeStampEnd){

To:

function __construct ($timeStampStart,$timeStampEnd){

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM