【发布时间】:2018-07-27 03:36:18
【问题描述】:
继续使用 Delphi 项目中的 Dynamics 365,我现在需要从 CRM 检索比默认情况下可以获得的 50 个实体更多的数据,并且通过设置 maxpagesize 首选项,我应该能够得到更多。
这是我现有的 Delphi 代码从 Dynamics 检索数据的样子:
RESTClient.BaseURL := 'https://mytest.api.crm6.dynamics.com';
RESTRequest.Resource := 'XRMServices/2011/OrganizationData.svc/AccountSet?$select=Name&';
RESTRequest.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';
RESTRequest.Execute;
这会返回 50 个结果,然后是分页标签(我们现在将忽略它):
<link rel="next" href="https://mytest.api.crm6.dynamics.com/XRMServices/2011/OrganizationData.svc/AccountSet?$select=Name&$skiptoken=1,'accountid','%7BE5752F29-1E8E-E811-8182-E0071B662BF1%7D','%7B700C44F2-BF8F-E811-8191-E0071B659EC1%7D'" />
https://msdn.microsoft.com/en-us/library/gg334767.aspx#bkmk_specifyNumber
根据上面的 MS 文档,指定要返回的实体数量的请求如下所示:
GET [Organization URI]/api/data/v8.2/accounts?$select=name HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
Prefer: odata.maxpagesize=3
我遇到的麻烦是如何指定 Prefer: odata.maxpagesize=nnn
这些是我尝试过的:
RESTClient.AddParameter('Prefer', 'odata.maxpagesize=250',TRESTRequestParameterKind.pkHTTPHEADER,
[TRESTRequestParameterOption.poDoNotEncode]);
RESTRequest.AddAuthParameter('Prefer', 'odata.maxpagesize=250',TRESTRequestParameterKind.pkHTTPHEADER,
[TRESTRequestParameterOption.poDoNotEncode]);
RESTRequest.Params.AddItem('Prefer', 'odata.maxpagesize=250',TRESTRequestParameterKind.pkHTTPHEADER,
[TRESTRequestParameterOption.poDoNotEncode]);
RESTRequest.Params.AddHeader('Prefer', 'odata.maxpagesize=250');
这些都不起作用。我仍然得到了 50 个实体。
还有其他人在使用 Delphi 10.2 中的 Dynamics 365 Web API 方面取得过成功吗,还是只有我一个人?
【问题讨论】:
标签: rest odata delphi-10.2-tokyo dynamics-crm-365