недопустимое значение AllXsd - PullRequest
11 голосов
/ 24 мая 2010

Я получил это из запроса клиента Soap:

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

Похоже, я отправляю неверное значение, как мне отформатировать мое значение в 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);
?>

Ответы [ 5 ]

28 голосов
/ 24 мая 2010

значения AllXsd выглядят примерно так: IIRC

2010-05-24T18: 13: 00

10 голосов
/ 27 октября 2010

Вам необходимо использовать формат даты ISO 8601 date('c', strtotime($my_date));

http://php.net/date

1 голос
/ 04 декабря 2013

Сокращение в погоню и использовать

date('c');
1 голос
/ 17 апреля 2011
// 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");
0 голосов
/ 24 мая 2010

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

2010-05-24T13:46:00

Вместо использования даты ("Y-m-d") попробуйте использовать:

$startDate = date("Y-m-d") . 'T' . date("H:i:s");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...