Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Office365 Rest结构-子文件夹_Rest_Office365_Outlook Restapi - Fatal编程技术网

Office365 Rest结构-子文件夹

Office365 Rest结构-子文件夹,rest,office365,outlook-restapi,Rest,Office365,Outlook Restapi,我正在试图找到一种从outlook office 365 api的子文件夹返回邮件的方法。 一切似乎都指向这一点 HttpResponseMessage response = await client.GetAsync("https://outlook.office365.com/api/v1.0/me/folders/inbox/childfolders/Odata/messages"); 但我总是收到一个不好的请求 这是我的资源 感谢Scott公共连接有效() public void E

我正在试图找到一种从outlook office 365 api的子文件夹返回邮件的方法。 一切似乎都指向这一点

HttpResponseMessage response = await client.GetAsync("https://outlook.office365.com/api/v1.0/me/folders/inbox/childfolders/Odata/messages");
但我总是收到一个不好的请求

这是我的资源

感谢Scott

公共连接有效()
public void EnsureConnectionValid()
    {
        if (AuthenticationContext == null)
        {
            AuthenticationContext = new AuthenticationContext(authority);
            AuthenticationResult = AuthenticationContext.AcquireToken(resource, clientId, new Uri(redirectUri), PromptBehavior.Auto);
        }
    }

    public async Task<string> GetFolderId(string Path)
    {
        EnsureConnectionValid();
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AuthenticationResult.AccessToken);
        var restCommand = "https://outlook.office365.com/api/v1.0/me/folders/Inbox/childfolders?$filter=DisplayName eq " + "'" + Path + "'";
        HttpResponseMessage response = await client.GetAsync(restCommand);
        response.EnsureSuccessStatusCode();
        string jsonMessage;
        using (var responseStream = await response.Content.ReadAsStreamAsync())
        {
            jsonMessage = new StreamReader(responseStream).ReadToEnd();
        }
        var folderObject = JObject.Parse(jsonMessage)["value"].ToObject<FoldersList[]>();
        return folderObject.Select(r => r.Id).SingleOrDefault();
    }
{ 如果(AuthenticationContext==null) { AuthenticationContext=新的AuthenticationContext(授权); AuthenticationResult=AuthenticationContext.AcquireToken(资源、客户端ID、新Uri(重定向Uri)、PromptBehavior.Auto); } } 公共异步任务GetFolderId(字符串路径) { 确保重新连接有效(); var client=新的HttpClient(); client.DefaultRequestHeaders.Authorization=新的AuthenticationHeaderValue(“承载者”,AuthenticationResult.AccessToken); var restCommand=”https://outlook.office365.com/api/v1.0/me/folders/Inbox/childfolders?$filter=DisplayName eq“+”+Path+”; HttpResponseMessage response=wait client.GetAsync(restCommand); response.EnsureSuccessStatusCode(); 字符串jsonMessage; 使用(var responseStream=await response.Content.ReadAsStreamAsync()) { jsonMessage=newstreamreader(responseStream.ReadToEnd(); } var folderObject=JObject.Parse(jsonMessage)[“value”].ToObject(); 返回folderObject.Select(r=>r.Id).SingleOrDefault(); }
URL语法为:

https://outlook.office365.com/api/v1.0/me/folders/<FOLDER ID>/Messages
你会得到一些类似的东西:

{
  "@odata.context": "https://outlook.office365.com/api/v1.0/$metadata#Me/Folders('inbox')/ChildFolders",
  "value": [
    {
      "@odata.id": "https://outlook.office365.com/api/v1.0/Users('JasonJ@contoso.com')/Folders('AAMkADNhMjcxM2U5LWY2MmItNDRjYy05YzgwLWQwY2FmMTU1MjViOAAuAAAAAAC_IsPnAGUWR4fYhDeYtiNFAQCDgDrpyW-uTL4a3VuSIF6OAAAeY0W3AAA=')",
      "Id": "AAMkADNhMjcxM2U5LWY2MmItNDRjYy05YzgwLWQwY2FmMTU1MjViOAAuAAAAAAC_IsPnAGUWR4fYhDeYtiNFAQCDgDrpyW-uTL4a3VuSIF6OAAAeY0W3AAA=",
      "ParentFolderId": "AAMkADNhMjcxM2U5LWY2MmItNDRjYy05YzgwLWQwY2FmMTU1MjViOAAuAAAAAAC_IsPnAGUWR4fYhDeYtiNFAQCDgDrpyW-uTL4a3VuSIF6OAAAAAAEMAAA=",
      "DisplayName": "New Subfolder",
      "ChildFolderCount": 0
    }
  ]
}
然后获取
Id
字段的值,并将其插入URL:

https://outlook.office365.com/api/v1.0/me/folders/AAMkADNhMjcxM2U5LWY2MmItNDRjYy05YzgwLWQwY2FmMTU1MjViOAAuAAAAAAC_IsPnAGUWR4fYhDeYtiNFAQCDgDrpyW-uTL4a3VuSIF6OAAAeY0W3AAA=/Messages

我想我需要一个文件夹id,因为它不是一个“众所周知”的文件夹。我会回来报到的
https://outlook.office365.com/api/v1.0/me/folders/AAMkADNhMjcxM2U5LWY2MmItNDRjYy05YzgwLWQwY2FmMTU1MjViOAAuAAAAAAC_IsPnAGUWR4fYhDeYtiNFAQCDgDrpyW-uTL4a3VuSIF6OAAAeY0W3AAA=/Messages