Это мой код
$c = new soapclient('http://www.redbus.in/WS2/BookingService.asmx?wsdl', array('authentication' => array('LoginID' => 'x','Password'=>'x'))); $timezone = new DateTimeZone('UTC'); $time='2012-04-17T16:50:45'; $date = new DateTime($time,$timezone); $sourceid=array('SourceID'=>'244','DestinationID'=>'477','DateOfJourney' =>$date); $stockprice = $c->GetAvailableRoutes($sourceid); print_r($stockprint);
он не работает в переменной типа данных datetime format
он показывает ошибку, подобную этой
Неустранимая ошибка: исключение SoapFault: [soap: Client] Сервер не смог прочитать запрос. —> В документе XML есть ошибка (2, 252). —> Строка '' не является допустимым значением AllXsd. в E: \ xampplite \ htdocs \ index1.php: 9 Трассировка стека: # 0 [внутренняя функция]: SoapClient -> __ call ('GetAvailableRou …', Array) # 1 E: \ xampplite \ htdocs \ index1.php ( 9): SoapClient-> GetAvailableRoutes (Array) # 2 {main} выбрано в E: \ xampplite \ htdocs \ index1.php в строке 9
Вам нужно отформатировать его, иначе вы бросаете объект DateTime в свой массив (какой PHP пытается преобразовать в строку, что не работает)
Например:
$date->format('Ymd H:i:s');
Применение
$sourceid = array('SourceID'=>'244','DestinationID'=>'477','DateOfJourney' => $date->format('Ymd H:i:s'));
У меня была аналогичная проблема при использовании службы SOAP с PHP. Я исправил его, используя:
$date->format('c');
(Дата ISO 8601, добавленная в PHP 5, выглядит так: 2004-02-12T15: 19: 21 + 00: 00)