不是有效的AllXsd值

时间:2010-05-24 18:34:55

标签: php xml soap

我从Soap客户端请求中得到了这个:

  

异常:SoapFault异常:   [soap:Client]服务器无法   读请求。 --->有一个错误   在XML文档中(2,273)。 --->该   字符串'2010-5-24'无效   AllXsd值。在/path/filinet.php:21   堆栈跟踪:#0 [内部功能]:   SoapClient-> __通话( 'SubIdDetailsByO ......',   数组)#1 /path/filinet.php(21):   SoapClient-> SubIdDetailsByOfferId(Array)#2 {main}

似乎我发送的值不正确,如何在php中的AllXsd中格式化我的值?

这是我的代码:

<?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 个答案:

答案 0 :(得分:28)

AllXsd值看起来像这样的IIRC

  

2010-05-24T18:13:00

答案 1 :(得分:10)

您需要使用ISO 8601日期格式date('c', strtotime($my_date));

  

http://php.net/date

答案 2 :(得分: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");

答案 3 :(得分:1)

切入追逐并使用

date('c');

答案 4 :(得分:0)

问题在于$ start或$ end的日期格式。而不是仅使用$ _GET从查询字符串中获取数据并将其发送出去,您需要进行一些完整性检查以确保日期与所需格式匹配

2010-05-24T13:46:00

尝试使用:

而不是使用日期(“Y-m-d”)
$startDate = date("Y-m-d") . 'T' . date("H:i:s");