Rest 如何使用Web API从Dynamics 365返回50多个结果

Rest 如何使用Web API从Dynamics 365返回50多个结果,rest,odata,delphi-10.2-tokyo,dynamics-crm-365,Rest,Odata,Delphi 10.2 Tokyo,Dynamics Crm 365,继续使用Delphi项目中的Dynamics 365,我现在需要从CRM中检索的数据超过默认情况下可以获取的50个实体,通过设置maxpagesize首选项,我应该能够获取更多数据 这就是我现有的Delphi代码从Dynamics中检索数据的样子: RESTClient.BaseURL := 'https://mytest.api.crm6.dynamics.com'; RESTRequest.Resource := 'XRMServices/2011/OrganizationData.

继续使用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个结果,然后是分页标记(我们现在将忽略它):

我遇到的麻烦是如何指定首选项: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,还是只有我一个人?

您使用了错误的端点,您正在调用

https://org/XRMServices/2011/OrganizationData.svc/AccountSet
你可能会打电话:

https://org/api/data/v8.2/accounts
这一点很重要,因为第一个已弃用,并且始终会有50行(可以使用PowerShell命令进行更改,如下所述)

使用第二个url(因此实际上支持pagesize的新WebAPI)最后一个选项应该可以工作:

RESTRequest.Params.AddHeader('Prefer', 'odata.maxpagesize=250');

天啊!基于开发定制Dynamics 365应用程序的公司向我发送的查询,我花了好几天的时间来研究这个问题。所有解析工作都已完成,结果以XML形式返回。CRM 2016只将记录作为odata返回,Delphi中没有用于解析odata的内容。。。
https://org/api/data/v8.2/accounts
RESTRequest.Params.AddHeader('Prefer', 'odata.maxpagesize=250');