如何在 c# Microsoft graph api 请求中获得响应 header
How to get response header in c# Microsoft graph api request
我正在尝试使用 Microsoft graph API 在 c# .net core 中执行 File Copy 操作。
这是一个异步操作,根据文档,它说它 returns 在 response header 中的一个位置来检查操作的状态,
现在的问题是我需要它的响应 header 以便我可以检查文件复制操作的状态但是每次我得到 'null' 作为值时,我都尝试了以下代码,
DriveItem response = await graphClient.Sites[siteId].Drive.Items[itemId]
.Copy(fileName, parentReference)
.Request()
.PostAsync();
driveItem returns null 但我认为至少它应该返回额外的 data-carrying 响应状态和位置。
当我在线使用时 graph api 它可以正常返回响应和位置,但它不适用于图形客户端服务。
显然这是 msgraph-sdk-dotnet
的问题,至少它可以在 3.8.0
版本中重现,错误发生在 deserializing HTTP response 时。将其报告为引用存储库中的错误可能会更有益。
同时,您可以考虑为 Copy a DriveItem
endpoint 构建请求并处理响应(包括提取 Location
header),如下所示:
var message = graphClient.Sites[siteId].Drive.Items[itemId]
.Copy(fileName, parentReference)
.Request()
.GetHttpRequestMessage();
message.Method = HttpMethod.Post;
var body = new DriveItemCopyRequestBody {Name = fileName, ParentReference = parentReference};
message.Content = new StringContent(graphClient.HttpProvider.Serializer.SerializeObject(body));
message.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = graphClient.HttpProvider.SendAsync(message).Result;
Console.Write(response.Headers.Location);
我正在尝试使用 Microsoft graph API 在 c# .net core 中执行 File Copy 操作。 这是一个异步操作,根据文档,它说它 returns 在 response header 中的一个位置来检查操作的状态, 现在的问题是我需要它的响应 header 以便我可以检查文件复制操作的状态但是每次我得到 'null' 作为值时,我都尝试了以下代码,
DriveItem response = await graphClient.Sites[siteId].Drive.Items[itemId]
.Copy(fileName, parentReference)
.Request()
.PostAsync();
driveItem returns null 但我认为至少它应该返回额外的 data-carrying 响应状态和位置。
当我在线使用时 graph api 它可以正常返回响应和位置,但它不适用于图形客户端服务。
显然这是 msgraph-sdk-dotnet
的问题,至少它可以在 3.8.0
版本中重现,错误发生在 deserializing HTTP response 时。将其报告为引用存储库中的错误可能会更有益。
同时,您可以考虑为 Copy a DriveItem
endpoint 构建请求并处理响应(包括提取 Location
header),如下所示:
var message = graphClient.Sites[siteId].Drive.Items[itemId]
.Copy(fileName, parentReference)
.Request()
.GetHttpRequestMessage();
message.Method = HttpMethod.Post;
var body = new DriveItemCopyRequestBody {Name = fileName, ParentReference = parentReference};
message.Content = new StringContent(graphClient.HttpProvider.Serializer.SerializeObject(body));
message.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
var response = graphClient.HttpProvider.SendAsync(message).Result;
Console.Write(response.Headers.Location);