如何更新邮件类别。得到了“空有效负载”。 JSON内容预计“错误调用Microsoft Graph

时间:2018-03-15 04:36:56

标签: c# microsoft-graph

我已经看到了一些与此问题相关的问题。我想我已经完成了所有的工作,但我仍然得到了#34;空有效负载"错误。有谁看到缺少的东西?

我想更新某些邮件的类别。由于这篇文章我正在使用beta端点:Microsoft Graph Client SDK vs. Requesting JSONs

这是我的代码:

public async void UpdateMailCategory(GraphServiceClient graphClient, string messageId, string inbox)
{

    string newCategory = @"{'categories': ['Processed']}";

    try
    {
        // Get the request URL for adding a page. 
        string requestUrl = graphClient
            .Users[inbox]
            .Messages[messageId]
            .Request()
            .RequestUrl;

        HttpRequestMessage hrm =
            new HttpRequestMessage(new HttpMethod("PATCH"), requestUrl);
        hrm.Content =
            new StringContent(newCategory, Encoding.UTF8, "application/json");

        // Authenticate (add access token) our HttpRequestMessage
        await graphClient.AuthenticationProvider
            .AuthenticateRequestAsync(hrm);

        // Send the request and get the response.
        HttpResponseMessage response =
            await graphClient.HttpProvider.SendAsync(hrm);
    }
    catch (ServiceException Servex)
    {
        throw Servex;
    }
}

当我查看hrm.content时,它会显示:

{ System.Net.Http.StringContent }
Headers:
{
    Content - Type : application / json;charset = utf - 8
    Content - Length : 35
}

1 个答案:

答案 0 :(得分:0)

您正在使用Graph Client SDK是一种相当迂回的方式,它更可能导致您头痛而不是其他任何事情。它还会导致代码更复杂。

SDK包含整个请求所需的一切。除边缘情况外,您永远不需要处理HttpProvider或管理HttpRequestMessageHttpResponseMessage实例。

以下内容将完成同样的事情(设置消息的Categories属性),复杂程度要低得多:

public async void UpdateMailCategory(GraphServiceClient graphClient, string messageId, string inbox)
{
    try
    {
        await graphClient
            .Users[inbox]
            .Messages[messageId]
            .Request()
            .UpdateAsync(new Message()
            {
                Categories = new List<string>() { "Processed" }
            });
    }
    catch (ServiceException Servex)
    {
        throw Servex;
    }
}

您也不应将/beta版本用于此操作,因为/v1.0版本支持 。您只需要利用/beta版本来管理用户的类别,因为通常尚未