我在查找如何使用office365 api获取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='."
}
}
我尝试了其他一些操作,例如将conversationId编码为AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3D
的url会导致相同的错误。
我也尝试过简单地移除=
,这似乎是吓坏了它的角色
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'."
}
}
我还尝试弄乱网址大写并使用+
符号代替%20
作为过滤字符串,但我一直有400个错误。
我可以通过其他字段进行过滤。例如
https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true
返回按我期望过滤的邮件。
知道ConversationId
过滤器会发生什么?
答案 0 :(得分:3)
您需要使用单引号包装ConversationId
。
这就是我在C#
string finalUrl = "https://outlook.office.com/api/beta/me/Messages?$filter=" + HttpUtility.UrlEncode(string.Format("ConversationId eq '{0}'", conversationId));