2016-12-12 3 views
1

Ich versuche, Ms Graph API zu verwenden, um Outlook zu verbinden und Anhang herunterzuladen. Was ich bis jetzt geschrieben istMicrosoft Graph API: HttpStatusCode 200, Inhaltslänge -1?

private static async Task<HttpWebRequest> createHttpRequestWithToken(Uri uri) 
{ 
     HttpWebRequest newRequest = (HttpWebRequest)HttpWebRequest.Create(uri); 

     string clientId = "myClientId"; 
     string clientSecret = "myClientSecret"; 
     ClientCredential creds = new ClientCredential(clientId, clientSecret); 

     AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/myAzureAD/oauth2/token"); 
     AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds); 
     newRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + authResult.AccessToken); 
     newRequest.ContentType = "application/json"; 

     return newRequest; 
    } 

Und ich bin mit dieser die Grafik-APIs aufrufen, die ich brauche. So beginnen, Ich habe versucht, den Aufruf dieser URL:

Uri uri = new Uri(("https://graph.microsoft.com/v1.0/users/myEmailId/messages")); 
HttpWebRequest request = createHttpRequestWithToken(uri).Result; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

Nachdem der Code ausgeführt wird, erhalte ich eine Antwort mit 200 Httpstatuscode, aber der Content-Length -1. Ich bin gerade hier festgefahren. Könnte mir bitte jemand helfen, wo ich falsch liege/wie man dieses Stück Code weiter debuggt.

Vielen Dank im Voraus.

Antwort

1

Die API verwendet "Transfer-Encoding: Chunked" und daher Content-Length-Header wird nicht zurückgegeben. Aus diesem Grund sehen Sie für die response.ContentLength-Eigenschaft den Standardwert -1. Um den Antworttext zu lesen, lesen Sie einfach den Antwort-Stream, der von der Methode response.GetResponseStream() erhalten wurde.

+0

Omg ... du hast Recht, das Entfernen der Inhalts-Länge-Prüfung hat den Trick gemacht. Vielen Dank –