通过 Office365 获取按 conversationId 过滤的消息 API
Fetch messages filtered by conversationId via Office365 API
我在弄清楚如何使用 office365 api 获取给定 conversationId
.
的消息时遇到了一些问题
假设我的 conversationId 是 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
我会提出这样的请求
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
这会导致 400
响应如下:
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Syntax error at position 98 in 'ConversationId eq AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow='."
}
}
我尝试了其他方法,例如 url 将 conversationId 编码为 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3D
,这导致了同样的错误。
我也试过简单地删除 =
这似乎是那个吓坏了它的角色
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow
但这会导致以下错误
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Could not find a property named 'AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow' on type 'Microsoft.OutlookServices.Message'."
}
}
我也试过弄乱 url capitalization 并使用 +
符号而不是 %20
作为过滤器字符串,但我始终得到 400返回错误。
不过我可以按其他字段进行过滤。例如
https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true
returns 邮件过滤如我所料。
知道 ConversationId
过滤器会发生什么吗?
您需要用单引号将 ConversationId
括起来。
这就是我在 C#
中伪造请求的方式
string finalUrl = "https://outlook.office.com/api/beta/me/Messages?$filter=" + HttpUtility.UrlEncode(string.Format("ConversationId eq '{0}'", conversationId));
我在弄清楚如何使用 office365 api 获取给定 conversationId
.
假设我的 conversationId 是 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
我会提出这样的请求
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
这会导致 400
响应如下:
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Syntax error at position 98 in 'ConversationId eq AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow='."
}
}
我尝试了其他方法,例如 url 将 conversationId 编码为 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3D
,这导致了同样的错误。
我也试过简单地删除 =
这似乎是那个吓坏了它的角色
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow
但这会导致以下错误
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Could not find a property named 'AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow' on type 'Microsoft.OutlookServices.Message'."
}
}
我也试过弄乱 url capitalization 并使用 +
符号而不是 %20
作为过滤器字符串,但我始终得到 400返回错误。
不过我可以按其他字段进行过滤。例如
https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true
returns 邮件过滤如我所料。
知道 ConversationId
过滤器会发生什么吗?
您需要用单引号将 ConversationId
括起来。
这就是我在 C#
string finalUrl = "https://outlook.office.com/api/beta/me/Messages?$filter=" + HttpUtility.UrlEncode(string.Format("ConversationId eq '{0}'", conversationId));