5

我在使用 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,在参数 3 处获得字符串

如果我运行,print_r(gettype($startDate));我会得到类型 data 是string而不是date

我的问题,对于变量$startDate以及$endDate如何使它们的数据类型为dateTime.iso8601date而不是string.

谢谢。

4

3 回答 3

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

这可以帮助你。

于 2013-05-01T09:58:54.657 回答
1

看起来您的 AgencyPublisherStatistics 需要特定的 XML_RPC2_Value 日期对象。您可以通过使用来创建它。

$startDate = XML_RPC2_Value::createFromNative($startDate, ‘datetime’);

结束日期相同..让我知道这是否有效..

于 2013-05-01T09:50:25.270 回答
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);
于 2013-05-01T10:27:59.393 回答