2017-11-19 7 views
0

Ich bekomme eine "schlechte Anfrage", wenn ich versuche, ein neues OneNote API Notebook zu erstellen.OneNote API Create Notebook

private async Task<string> CreateSimpleNotebook(string notebookName, string apiRoute) 
    { 
     var client = new HttpClient(); 

      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

     try 
     { 
      client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken); 
     } 
     catch (Exception ex) 
     { 
      string tempEx = ex.ToString(); 
     } 

     var createMessage = new HttpRequestMessage(HttpMethod.Post, apiRoute) 
     { 
      Content = new StringContent("{ name : '" + WebUtility.UrlEncode(notebookName) + "' }", Encoding.UTF8, "application/json") 
     }; 

     HttpResponseMessage response = await client.SendAsync(createMessage); 

     return response.Headers.Location.ToString(); 
    } 

Und ich rufe die Methode mit dem folgenden:

 string url = "https://graph.microsoft.com/v1.0/me/onenote/notebooks/"; 
     // string url = "https://www.onenote.com/api/v1.0/me/notes/notebooks/"; 

     string tempResponse = await CreateSimpleNotebook("EMRTest2", url); 

Hier ist die Antwort:

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 

{ Client-Anfrage-ID: acacd4f5-8738-4c46-8150 -17aa23413eb5 Anfrage-ID: acacd4f5-8738-4c46-8150-17aa23413eb5 Transfer-Codierung: chunked x-ms-ags-diagnostic: {"Serve rInfo ": {" DataCenter ":" South Central USA "," Slice ":" SliceB "," Ring ":" NA "," ScaleUnit ":" 002 "," Host ":" AGSFE_IN_10 "," ADSiteName ": "SAN"}} Dauer: 772,4124 Cache-Control: privat Date: Sun, 19. November 2017 20.59.10 GMT Content-Type: application/json }}

Antwort

1
  1. sollten Sie Inhalt verwenden -Typs JSON
  2. der Name der Eigenschaft, die Sie suchen, ist nicht „name“, es ist „displayname“

Zusätzlich JSON Crafting von str Anfügen Ich empfehle die Verwendung einer JSON-Bibliothek wie NewtonSoft JSON.NET.

+0

Dank der "displayName" behoben das Problem. Ich sehe nicht, wo die Content-Type JSON-Änderung vorgenommen werden sollte. –

+0

Als HTTP-Header Ihrer Anfrage. –

Verwandte Themen