我正在尝试使用.NET客户端库(来自https://www.nuget.org/packages/Microsoft.Graph的 1.4版)设置一个增量查询示例。进行初始调用很顺利:
var page = await _graphClient.Users.Delta().Request().GetAsync();
while (page.NextPageRequest != null)
{
page = await page.NextPageRequest.GetAsync();
}
Run Code Online (Sandbox Code Playgroud)
一段时间后获得deltaLink仍然很明显:
string deltaLink = (string)page.AdditionalData["@odata.deltaLink"];
Run Code Online (Sandbox Code Playgroud)
但是,以后使用此deltaLink的正确方法是什么?我还没有找到明显的方法/构建器,该方法/构建器将允许我以后使用URL继续运行(我当前的解决方案是使用https: //“使用.Net Microsoft Graph客户端库发送HTTP请求”部分中的代码: //github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/docs/overview.md并将其投放到UserDeltaCollectionResponse-那时我可以再次使用普通的API)。
小智 8
我编写了一些代码来获取实际的 delta 令牌字符串。
Uri deltaUri = new Uri(delta.AdditionalData[deltaLinkKey].ToString());
var queries = System.Web.HttpUtility.ParseQueryString(deltaUri.Query);
string token = queries.Get("$deltatoken");
Run Code Online (Sandbox Code Playgroud)
API 中有一个 QueryOption 对象,您可以将其添加到请求中。所以,你上面的代码看起来像这样。
QueryOption deltaOption = new QueryOption("$deltaToken", deltaToken);
var page = await _graphClient.Users.Delta().Request(new[] { deltaOption }).GetAsync();
Run Code Online (Sandbox Code Playgroud)
小智 5
你是对的; 当前,没有一种优雅的方法可以将增量链接用作新请求的基础。您将需要自己保存它并创建一个自定义HTTP请求:
HttpRequestMessage hrm = new HttpRequestMessage(HttpMethod.Get, deltaLink);
await graphClient.AuthenticationProvider.AuthenticateRequestAsync(hrm);
HttpResponseMessage response = await graphClient.HttpProvider.SendAsync(hrm);
Run Code Online (Sandbox Code Playgroud)
如果您希望在同一应用程序实例中再次使用它,则可以更轻松地使用它:
driveItemDeltaCollectionPage.InitializeNextPageRequest(graphClient, deltaLink.ToString());
driveItemDeltaCollectionPage = await driveItemDeltaCollectionPage.NextPageRequest.GetAsync();
Run Code Online (Sandbox Code Playgroud)
此库上当前存在一个未解决的问题,可以为增量链接添加更直观的支持。
归档时间: |
|
查看次数: |
625 次 |
最近记录: |