我在使用OpenX API和XML-RPC2进行连接编码时遇到了麻烦。我遇到的问题是fire函数需要的数据类型是dateTime.iso8601。
这是我的代码:
$sdatetime = new DateTime('2013-01-01 00:00:00');
$edatetime = new DateTime('2013-06-01 00:00:00');
$startDate = $sdatetime->format(DateTime::ISO8601);
$endDate = $edatetime->format(DateTime::ISO8601);
try {
$result = $aClient->agencyPublisherStatistics($sessionId, 1, $startDate, $endDate);
print_r($result);
} catch (XML_RPC2_FaultException $e) {
die('Exception #' . $e->getFaultCode() . ' : ' . $e->getFaultString());
}
当我运行上面的脚本时,这是结果错误:
异常#3:不正确 传递给方法的参数:通缉dateTime.iso8601,得到字符串 param 3
如果我运行print_r(gettype($startDate));
我的类型数据是字符串而非日期。
我的问题是,对于变量$startDate
和$endDate
,如何使其数据类型为dateTime.iso8601
或date
而不是string
。
感谢。
答案 0 :(得分:1)
看起来您的agencyPublisherStatistics需要特定的XML_RPC2_Value日期对象。您可以使用。
创建$startDate = XML_RPC2_Value::createFromNative($startDate, ‘datetime’);
结束日期相同..让我知道这是否有效..
答案 1 :(得分:1)
试试这个,
$sdatetime = date(DATE_ISO8601, strtotime('2013-01-01 00:00:00'));
$edatetime = date(DATE_ISO8601, strtotime('2013-06-01 00:00:00'));
或强>
检查以下链接,
http://pear.php.net/manual/en/package.webservices.xml-rpc2.client.php
https://bugs.php.net/bug.php?id=51950
这可能对你有所帮助。
答案 2 :(得分:0)
使用DateTime::setISODate
$sdatetime = new DateTime('2013-01-01 00:00:00');
$edatetime = new DateTime('2013-06-01 00:00:00');
$startDate = $sdatetime->setISODate(2013);
$endDate = $edatetime->setISODate(2013);