如何从OneNote API的GET请求接收响应包

时间:2014-08-07 14:53:28

标签: xmlhttprequest json.net onenote

我收到了确认但没有回复消息(详细信息),即来自OneNote API的笔记本列表。以下是我的代码。我能够从POST消息但不是GET接收头和JSON详细信息。我试图转换POST代码以提交GET请求。

private async void getRequestClick(object sender, RoutedEventArgs e)
    {
     await GetRequests(true, "test");
    }
    async public Task<StandardResponse> GetRequests(bool debug, string sectionName)
    {
         Uri PagesEndPoint1 = new Uri("https://www.onenote.com/api/v1.0/notebooks");
        var client = new HttpClient();
        //// Note: API only supports JSON return type.
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        //// This allows you to see what happens when an unauthenticated call is made.
        if (IsAuthenticated)
        {
            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authClient.Session.AccessToken);
        }
        HttpResponseMessage response;
        HttpRequestMessage createMessage = new HttpRequestMessage(HttpMethod.Get, PagesEndPoint1);
        response = await client.SendAsync(createMessage);
        tbResponse.Text = response.ToString();
        return await TranslateResponse(response);
    }

    private async static Task<StandardResponse> TranslateResponse(HttpResponseMessage response)
    {
        StandardResponse standardResponse;
        if (response.StatusCode == HttpStatusCode.Created)
        {
            dynamic responseObject = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
            standardResponse = new CreateSuccessResponse
            {
                StatusCode = response.StatusCode,
                OneNoteClientUrl = responseObject.links.oneNoteClientUrl.href,
                OneNoteWebUrl = responseObject.links.oneNoteWebUrl.href
            };
        }
        else
        {
            standardResponse = new StandardErrorResponse
            {
                StatusCode = response.StatusCode,
                Message = await response.Content.ReadAsStringAsync()
            };
        }
        // Extract the correlation id.  Apps should log this if they want to collcet the data to diagnose failures with Microsoft support 
        IEnumerable<string> correlationValues;
        if (response.Headers.TryGetValues("X-CorrelationId", out correlationValues))
        {
            standardResponse.CorrelationId = correlationValues.FirstOrDefault();
        }
        return standardResponse;
    }

我的POST消息正常运行。我可以创建一个新页面等。

1 个答案:

答案 0 :(得分:3)

我认为您需要将预期状态代码从HttpStatusCode.Created更改为HttpStatusCode.OK以获取请求,因为它们返回200而不是201.尝试在TranslateResponse方法中执行此操作。