Я сделал php мыло-клиент. Я передаю сложный объект и строку во время мыльного звонка. Переданный объект получен как нуль в Java, но переданная строка получена правильно. Класс class (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, но перед вызовом soapcall в php он показывает все значения. Это связано с длинным типом данных в Java?
Спасибо
Обновление: я решил эту проблему
Я заполнил объект, как это, и объект не получает как NULL. Это еще один способ вызвать функцию мыла.
$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){