我从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);
?>
答案 0 :(得分:28)
AllXsd值看起来像这样的IIRC
2010-05-24T18:13:00
答案 1 :(得分:10)
您需要使用ISO 8601日期格式date('c', strtotime($my_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");