2010-05-24 6 views
11

Я получил это от запроса клиента Soap:не является допустимым значением AllXsd

Исключения: SoapFault исключения: [мыло: Клиент] Сервер не смогло запроса чтения. ---> В документе XML есть ошибка (2, 273). ---> Строка '2010-5-24' не является допустимым значением AllXsd. in /path/filinet.php:21 Трассировка стека: # 0 [внутренняя функция]: SoapClient -> __ call ('SubIdDetailsByO ...', Array) # 1 /path/filinet.php(21): SoapClient -> SubIdDetailsByOfferId (Array) # 2 {главная}

Кажется, я посылаю неверное значение, как отформатировать значение в AllXsd в PHP?

Вот мой код:

<?php  
$start = isset($_GET['start']) ? $_GET['start'] : date("Y-m-d"); 
$end = isset($_GET['end']) ? $_GET['end'] : date("Y-m-d"); 

//define parameter array 
$param = array('userName'=>'user', 'password'=>'pass', 'startDate' => $start, 'endDate' => $end, 'promotionId' => ''); 

//Get wsdl path 
$serverPath = "https://webservices.filinet.com/affiliate/reports.asmx?WSDL"; 

//Declare Soap client 
$client = new SoapClient($serverPath); 
try { 
     //make the call 
     $result = $client->SubIdDetailsByOfferId($param); 
     //If error found display error 
     if(isset($fault)) 
     { 
      echo "Error: ". $fault; 
     } 
     //If no error display response 
     else 
     { 
      //Used to display raw XML in the Web Browser 
      header("Content-Type: text/xml;"); 
      //SubIdDetailsResult = XML results 
      echo $result->SubIdDetailsByOfferIdResult; 
     } 
    } 
    catch(SoapFault $ex) { 
     echo "<b>Exception:</b> ". $ex; 
    } 
unset($client); 
?> 

ответ

25

значения AllXsd выглядеть как этот IIRC

2010-05-24T18: 13: 00

0

Проблема с датой формат либо $ start, либо $ end. Вместо того, чтобы просто захват данных из строки запроса с $ _GET и отправить его снова, вы должны сделать некоторые проверки целостности, чтобы убедиться, что дата соответствует требуемому формату

2010-05-24T13:46:00 

Вместо того, чтобы использовать дату («Ymd») можно использовать:

$startDate = date("Y-m-d") . 'T' . date("H:i:s"); 
+0

извините, это не сработало. –

1
// set the default timezone to use. Available since PHP 5.1 
date_default_timezone_set('UTC'); 
// get the date 
$startDate = date("Y-m-d") . 'T' . date("H:i:s"); 
1

Вырезать в погоню и использовать

date('c'); 
Смежные вопросы