当我使用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中一样),我会收到网关错误。如果我不使用它,就不会获得日历事件。
答案 0 :(得分:0)
我认为这与内容类型标头中的odata.streaming=true;IEEE754Compatible=false;
有关。使用此标头,您可以告诉Microsoft您想要保持连接打开状态并接收其他更改。 (我什至不知道他们是否支持。)
根据documentation,您不需要发送这些额外的标题。