'read onedrive api errors

I am current using the following to try and create an upload session with the onedrive api

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.Headers["Authorization"] = "Bearer " + nODUserTokenObj.Access_Token;
request.ContentType = "application/json";
string data =
        @"{
            ""@microsoft.graph.conflictBehavior"": ""replace""
        }";
byte[] postBytes = Encoding.ASCII.GetBytes(data);
request.ContentLength = postBytes.Length;
request.Accept = "application/json";

request.GetRequestStream().Write(postBytes, 0, postBytes.Length);

using (HttpWebResponse httpWebResponse = (HttpWebResponse)request.GetResponse())
{
    using(StreamReader sr = new StreamReader(httpWebResponse.GetResponseStream()))
    {
        string theData = sr.ReadToEnd();

        JObject test = JObject.Parse(theData);
    }
}

Currently I am receiving an exception stating

The remote server returned an error: (409) Conflict.

However looking at the Microsoft documentation I should have a json object returned to me with more information.

What am I doing wrong that I am getting an exception thrown when it hits (HttpWebResponse)request.GetResponse() as opposed to receiving a json object with more error details?



Solution 1:[1]

I came across two solutions:

  1. I initially resolved this by sending the request through Fiddler and reading the response there. This was fine for my situation as I was developing and just trying to figure out how the onedrive api functioned.
  2. A solution going forward would be to follow something like this post suggests (How to get error information when HttpWebRequest.GetResponse() fails)

To summarize the post:

catch (WebException ex)
{
    using (var stream = ex.Response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        Console.WriteLine(reader.ReadToEnd());
    }
}
catch (Exception ex)
{
    // Something more serious happened
    // like for example you don't have network access
    // we cannot talk about a server exception here as
    // the server probably was never reached
}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 peroija