joh*_*ser 3 outlook office365 office365api office365-restapi
我在弄清楚如何使用 office365 api 获取给定conversationId.
假设我的对话 ID 是 AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
我会提出这样的要求
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow=
Run Code Online (Sandbox Code Playgroud)
这会导致如下400响应:
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Syntax error at position 98 in 'ConversationId eq AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow='."
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了其他事情,例如 url 编码的 sessionIdAAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow%3D导致相同的错误。
我还尝试简单地删除=似乎是吓坏它的角色
https://outlook.office.com/api/v1.0/me/Messages?$filter=ConversationId%20eq%20AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow
Run Code Online (Sandbox Code Playgroud)
但这会导致以下错误
{
"error": {
"code": "RequestBroker-ParseUri",
"message": "Could not find a property named 'AAQkADlkOGJmMTFmLTc2NjMtMKL3My04ZDhkLTVmZWNjMzA1ODY0NAAQAB11Xh2opSpBiXifMEJjhow' on type 'Microsoft.OutlookServices.Message'."
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试弄乱 url 大写并使用+符号代替%20过滤器字符串,但我始终收到 400 个错误。
不过,我可以按其他字段进行过滤。例如
https://outlook.office.com/api/v1.0/me/Messages?$filter=IsRead%20eq%20true
Run Code Online (Sandbox Code Playgroud)
返回按我预期过滤的消息。
知道ConversationId过滤器会发生什么吗?
您需要ConversationId用单引号括起来。这就是我如何在 C# 中伪造我的请求
string finalUrl = "https://outlook.office.com/api/beta/me/Messages?$filter=" + HttpUtility.UrlEncode(string.Format("ConversationId eq '{0}'", conversationId));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1136 次 |
| 最近记录: |