批量调用Microsoft Graph日历时获得504网关超时

时间:2019-04-09 11:17:32

标签: php microsoft-graph guzzle microsoft-graph-calendar

当我使用Postman时,它可以完美工作。但是,如果我在PHP中使用相同的标头,则会出现504 Gateway Time-out错误。

这就是我调用请求的方式:

$headers = [
    'Authorization' => 'Bearer ' . $this->getAccessToken(),
    'Cache-Control' => 'private',
    'Transfer-Encoding' => 'chunked',
    'Content-Type' => 'application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8',
    'Content-Encoding' => 'gzip',
    'Vary' => 'Accept-Encoding',
    'x-ms-ags-diagnostic' => '{"ServerInfo":{"DataCenter":"West Europe","Slice":"SliceC","Ring":"5","ScaleUnit":"003","RoleInstance":"AGSFE_IN_12","ADSiteName":"WEU"}}',
    'Preference-Applied' => 'odata.track-changes',
    'OData-Version' => '4.0'
];

$request = $this->guzzle->get('v1.0/me/calendarview/delta?startdatetime=2019-12-12T00:00:00Z&enddatetime=2019-12-13T00:00:00Z', ['headers' => $headers]);
print_r($request->getBody());

Transfer-Encoding更改为chunked(就像在Postman中一样),我会收到网关错误。如果我不使用它,就不会获得日历事件。

1 个答案:

答案 0 :(得分:0)

我认为这与内容类型标头中的odata.streaming=true;IEEE754Compatible=false;有关。使用此标头,您可以告诉Microsoft您想要保持连接打开状态并接收其他更改。 (我什至不知道他们是否支持。)

根据documentation,您不需要发送这些额外的标题。