首页 > 解决方案 > 将 JSON 数据发布到 Microsoft Graph API Azure 函数

问题描述

我正在尝试使用 Azure 函数使用其 ID 转发 Outlook 电子邮件。

var url = "https://graph.microsoft.com/v1.0/users('<blah>')/messages/" + ID + "/forward";
var content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
var response = await client.PostAsJsonAsync(url, content);
log.Info(response.Content.ReadAsStringAsync().Result);

我得到的结果是The value of the parameter 'ToRecipients' is empty. Specify 'ToRecipients' either in the message object or in the action.

我传入的数据变量是{"message":{"ToRecipients":[{"emailAddress":{"address":"<blah>"}}]}}.

我究竟做错了什么?如何成功发布数据 JSON 对象?我觉得我已经尝试了可以​​在网上找到的每个示例,但我没有任何运气。

仅供参考,令牌已经附加到标题中,我只是没有显示那部分。

标签: c#postoutlookmicrosoft-graph-apiazure-functions

解决方案


您似乎正在对要发送的数据进行双重序列化。

首先当你手动序列化

...JsonConvert.SerializeObject(data)...

第二,当你打电话时PostAsJsonAsync

client.PostAsJsonAsync(url, content);

这将在发布之前将提供的对象序列化为 JSON。

如果调用PostAsJsonAsync,则无需您手动创建内容

//...

var url = "https://graph.microsoft.com/v1.0/users('<blah>')/messages/" + ID + "/forward";
var response = await client.PostAsJsonAsync(url, data);
var result = await response.Content.ReadAsStringAsync();
log.Info(result);

//...

推荐阅读