Flemin Adambukulam
Flemin Adambukulam

Reputation: 860

Microsoft Graph API: HttpStatusCode 200, Content-Length -1?

I'm trying to use Ms Graph API to connect to outlook and download attachment. What I have written till now is

 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;
  } 

And I'm using this to call the Graph APIs that I need. So to begin with, I tried calling this URL:

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

After running the code, I get a response with HttpStatusCode 200 but the Content-Length is -1. I'm currently stuck here. Could someone please help me with where I'm going wrong / how to debug this piece of code further.

Thanks in advance.

Upvotes: 1

Views: 749

Answers (1)

The API uses "Transfer-Encoding: chunked" and hence Content-Length header is not returned. This is why you see default value of -1 for response.ContentLength property. To read the response body, simply read response stream obtained by response.GetResponseStream() method.

Upvotes: 1

Related Questions