Search code examples
c#httprequestdotnet-httpclienthttp-status-code-401

I am getting StatusCode: 401 "Unauthorized" in a HttpClient.PostAsync (C#)


I am trying to use an API Rest (IGDB) making an Http Post Request with HttpClient; this request needs to have a key and a body. I am providing the key in HttpClient.DefaultRequestHeaders.Authorization, but I am getting a 401 status code, I know that the key works because I have used it in Postman and It worked fine, so I must be implementing it wrong.

My code:

private async Task<string> ConsumeApi()
        {
            HttpClient client = new HttpClient();
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Key Name", "Key Value");

            //Makes the client request only Json data
            //client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("aplication/json"));

            string theUri = "https://api-v3.igdb.com/games";


            var stringcontent = new StringContent("fields name", UnicodeEncoding.UTF8,"application/json");

            var response = await client.PostAsync("https://api-v3.igdb.com/games", stringcontent);
            return response.ToString();
        }

And these are Postman pictures of what I am trying to implement (works fine): Picture3


Solution

  • AuthenticationHeaderValue

    is not setting a header but is an authorization header. Set a normal header value, not one prefixed with Authentication.