Я использую FetchXML с веб-API Dynamics 365. Это достаточно просто, пока я не попытаюсь ввести пейджинг.
В исходном запросе, который я передаю, есть эта выборка, которую я encodeURI
включил:
<fetch nolock='true' page='1' count='5' returntotalrecordcount='true'>
<entity name='td_servicesummary'>
//Query ommitted for brevity
</entity>
</fetch>
Это возвращает 5 результатов, которые я ожидаю. Всего их 7, которые также возвращаются мне через @Microsoft.Dynamics.CRM.totalrecordcount
.
Я получаю пейджинговый cookie через @Microsoft.Dynamics.CRM.fetchxmlpagingcookie
. Мне кажется уже закодировано:
<cookie pagenumber="2" pagingcookie="%253ccookie%2520page%253d%25221%2522%253e%253ctd_reportedon%2520last%253d%25222019-06-25T19%253a09%253a37-00%253a00%2522%2520first%253d%25222019-06-30T19%253a48%253a51-00%253a00%2522%2520%252f%253e%253ctd_servicesummaryid%2520last%253d%2522%257b62B328C1-7C97-E911-A99F-000D3AB0CA26%257d%2522%2520first%253d%2522%257bFF4A2314-709B-E911-A994-000D3AB0C24C%257d%2522%2520%252f%253e%253c%252fcookie%253e" istracking="False" />
На самом деле, если я запускаю это через декодер, я получаю ожидаемую, более читаемую версию:
<cookie pagenumber="2" pagingcookie="<cookie page="1"><td_reportedon last="2019-06-25T19:09:37-00:00" first="2019-06-30T19:48:51-00:00" /><td_servicesummaryid last="{62B328C1-7C97-E911-A99F-000D3AB0CA26}" first="{FF4A2314-709B-E911-A994-000D3AB0C24C}" /></cookie>" istracking="False" />
Однако, если я установлю это при следующем запросе, что-то вроде этого:
<fetch nolock='true' page='2' count='5' paging-cookie="<cookie pagenumber="2" pagingcookie="%253ccookie%2520page%253d%25221%2522%253e%253ctd_reportedon%2520last%253d%25222019-06-25T19%253a09%253a37-00%253a00%2522%2520first%253d%25222019-06-30T19%253a48%253a51-00%253a00%2522%2520%252f%253e%253ctd_servicesummaryid%2520last%253d%2522%257b62B328C1-7C97-E911-A99F-000D3AB0CA26%257d%2522%2520first%253d%2522%257bFF4A2314-709B-E911-A994-000D3AB0C24C%257d%2522%2520%252f%253e%253c%252fcookie%253e" istracking="False" />" returntotalrecordcount='true'>
<entity name='td_servicesummary'>
//Query ommitted for brevity
</entity>
</fetch>
Мой запрос возвращает 400.
Я видел в некоторых блогах, что вам не нужно указывать файл cookie для пейджинга; это абсолютно не так для меня.
У кого-нибудь есть пейджинг с fetch, работающий через Web API?