我正在尝试将一些事件从Outlook同步到我的本地数据库,我将API调用如下:
$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
. '?startDateTime=' . $start_datetime
. '&endDateTime=' . $end_datetime
这为我提供了两个特定日期之间Outlook的所有事件。
然后我使用下面的代码保存所有这些事件。它的问题是它一次只返回10个事件。
$http = new \Http_Curl();
$http->set_headers( $this->get_headers() );
$response = $http->get( $url );
$data = array();
$continue = true;
while ( $continue ) {
if ( isset($response->value) ) {
$arr = array();
foreach ( $response->value as $event ) {
$arr[] = $event;
}
$data = array_merge( $data, $arr );
}
$property = '@odata.nextLink';
if ( isset( $response->$property ) ) {
$url = $response->$property;
$response = $http->get( $url );
} else {
$continue = false;
}
}
unset( $http );
return $data;
然后我尝试调用下面的API,将top参数设置为10,但我最终得到了许多空事件。
$url = 'https://outlook.office365.com/api/v2.0/users/' . $this->user . '/CalendarView/'
. '?startDateTime=' . $start_datetime
. '&endDateTime=' . $end_datetime
.'&top=100'
我试图避免每分钟拨打60多个电话。有没有办法首先获取两个日期之间的事件数,然后检索所有事件,因此top
参数实际上应该是事件的总数。
答案 0 :(得分:1)
正确的查询参数是$top
而不是top
。请注意$
。
5.1.5系统查询选项$ top和$ skip $ top系统查询选项请求查询的集合中的项目数包含在结果中。 $ skip查询选项请求查询集合中要跳过但未包含在结果中的项目数。客户可以通过组合$ top和$ skip来请求特定的项目页面。 $ top和$ skip的语义包含在[OData-Protocol]文档中。 [OData-ABNF] top和skip语法规则分别定义了$ top和$ skip查询选项的形式语法。