在以块为单位调用Microsoft Graph Calendar时获取504网关超时

问题描述 投票:0回答:1

当我使用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中一样),我就会收到网关错误。如果我不使用它,我不会得到日历事件。

php microsoft-graph guzzle microsoft-graph-calendar
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.