2012-04-16 34 views
2

這是我的代碼datetime數據類型的肥皂PHP不工作

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

它不是在日期時間格式的數據類型變量

工作就顯示錯誤這樣

致命錯誤:未捕獲的SOAPFault例外: soap:客戶端]服務器無法讀取請求。 ---> 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}在第9行拋出E:\ xampplite \ htdocs \ index1.php

回答

1

你需要format它,否則你會拋出一個DateTime對象到你的數組中(其中PHP嘗試轉換爲字符串,它不工作)

例如:

$date->format('Y.m.d H:i:s'); 

使用

$sourceid = array('SourceID'=>'244','DestinationID'=>'477','DateOfJourney' => $date->format('Y.m.d H:i:s')); 
+0

感謝您的幫助,但直到不起作用 – azarmfa 2012-04-16 11:21:56

+0

你是否嘗試了它作爲參數而不是數組?你是否已經嘗試轉儲生成的XML,如[SoapClient :: __ getLastRequest()](http://php.net/manual/en/soapclient.getlastrequest.php)中所述(請參閱評論) – 2012-04-16 11:39:54

+0

當我把日期時間格式返回「致命錯誤:未捕獲SoapFault異常:[soap:Client]服務器無法讀取請求---> XML文檔(2,292)中存在錯誤--->字符串'2012- 04-17IST00:00:00'不是有效的AllXsd值「 – azarmfa 2012-04-16 11:50:09

8

我在使用PHP的SOAP服務時遇到了類似的問題。我固定它使用:

$date->format('c');

(ISO 8601日期,在PHP 5中添加,看起來像:2004-02-12T15:19:21 + 00:00)

+0

謝謝,它在php 5.5和服務器上的soap請求中工作api.mindbodyonline.com – 2014-03-07 21:08:01

+0

謝謝,我在肥皂請求中有同樣的問題,現在它的工作原理 – jamseernj 2015-03-10 05:36:22

+0

這使我在撥打SoH Call給Ontime360的API時 – 2015-09-17 02:27:44