不是有效的 AllXsd 值
Posted
技术标签:
【中文标题】不是有效的 AllXsd 值【英文标题】:not a valid AllXsd value 【发布时间】:2011-02-23 08:50:01 【问题描述】:我从 Soap 客户端请求中得到了这个:
异常:SoapFault 异常: [soap:Client] 服务器无法 读取请求。 ---> 有错误 在 XML 文档 (2, 273) 中。 ---> 的 字符串 '2010-5-24' 无效 AllXsd 值。在 /path/filinet.php:21 堆栈跟踪:#0 [内部函数]: SoapClient->__call('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);
?>
【问题讨论】:
【参考方案1】:AllXsd 值看起来像这样的 IIRC
2010-05-24T18:13:00
【讨论】:
【参考方案2】:问题在于 $start 或 $end 的日期格式。除了使用 $_GET 从查询字符串中获取数据并将其发送过来之外,您还需要进行一些完整性检查以确保日期与所需的格式匹配
2010-05-24T13:46:00
不要使用 date("Y-m-d") 尝试使用:
$startDate = date("Y-m-d") . 'T' . date("H:i:s");
【讨论】:
【参考方案3】:您需要使用 ISO 8601 日期格式date('c', strtotime($my_date));
http://php.net/date
【讨论】:
【参考方案4】:// 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");
【讨论】:
【参考方案5】:切入正题并使用
date('c');
【讨论】:
以上是关于不是有效的 AllXsd 值的主要内容,如果未能解决你的问题,请参考以下文章
GetTimeZoneInformation 的返回值对动态 DST 区域是不是也有效?
带有 SelectMultiple 小部件的 MultipleChoiceField “值 [...] 不是有效选择。”
创建 XML 时如何有效地检查 NSDictionay 键是不是具有值