【发布时间】:2018-04-06 02:22:19
【问题描述】:
如果我通过网络浏览器对 D365 进行身份验证,然后输入以下 URL:
https://mytenantcode.crmserver.dynamics.com/api/data/v8.2/systemusers?$select=systemuserid,lastname,firstname ,title&$top=3
我可以用我请求的数据取回前 3 条记录。
我似乎能够按照my other question(我已回答)在代码中对 D365 进行身份验证,并且拥有访问令牌,但我似乎无法确定如何设置 TRESTRequest 对象,以便执行工作。
目前,它总是返回 401 Unauthorized 错误。
我尝试将TOAuth2Authenticator.AccessToken 属性设置为我从D365 收到的令牌,然后将TRESTClient.Authenticator 属性设置为TOAuth2Authenticator,将TRESTQuest.Client 设置为TRESTClient,这就是示例的方式在 RESTDemos 项目中工作,但我仍然得到 401。
这是我尝试的代码的最后一个示例,它应该可以工作,因为所有 REST 对象都已正确链接:
RESTClient.BaseURL := 'https://**mytenantcode**.**crmserver**.dynamics.com/api/data/v8.2/';
RESTRequest.Method := TRESTRequestMethod.rmGET;
RESTRequest.Resource := 'systemusers?$select={SELECT}&$top={TOP}';
RESTRequest.AddParameter('SELECT', 'systemuserid,'+
'lastname,'+
'firstname,'+
'title');
RESTRequest.AddParameter('TOP', '3');
RESTRequest.Execute;
【问题讨论】:
-
Dynamics 论坛上有这个问题看起来很相似,答案是 Dynamics 365 在 ADAL 之外不支持它。 community.dynamics.com/ax/f/33/t/256722
标签: rest delphi odata dynamics-365 delphi-10.2-tokyo