9

I have the following code, and I want to set the Authorization of the post request to be like this:

Authorization:key=somevalue

using (HttpClient client = new HttpClient())
{
     using (StringContent jsonContent = new StringContent(json))
     {
         jsonContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

         using (HttpResponseMessage response = await client.PostAsync("https://android.googleapis.com/gcm/send", jsonContent))
         {
            var reponseString = await response.Content.ReadAsStringAsync();
         }
     }
}

how to do this? I am really struggling and the following statement

client.DefaultRequestHeaders.Add("Authorization", "key=" + apiKey);

thrown the following exception

An exception of type 'System.FormatException' occurred in System.Net.Http.dll but was not handled in user code

Hakan Fıstık
  • 16,800
  • 14
  • 110
  • 131
  • Do you have first chance exceptions enabled? If so, turn them off. – Yuval Itzchakov Aug 23 '15 at 14:40
  • I would myself prefer using `FormUrlEncodedContent` for this purpose, to send the keys and other stuff as if I was submitting the form. https://msdn.microsoft.com/en-us/library/system.net.http.formurlencodedcontent%28v=vs.118%29.aspx – Afzaal Ahmad Zeeshan Aug 23 '15 at 14:46

3 Answers3

25

I solved this by the following line of code.

client.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("key", "=" + apiKey);
Hakan Fıstık
  • 16,800
  • 14
  • 110
  • 131
2

Not sure if this is still running, but basic auth key and something like a 64 hash authed key would be added to something like a REST call like:

var httpClient2 = new HttpClient();
var uri = new Uri("<someuri>");
var tokenKey = "<sometokenkey>");
var httpContent = new StringContent("<some body or serialized thing>", System.Text.Encoding.UTF8, "application/json");

httpClient2.BaseAddress = new Uri(uri);
httpClient2.DefaultRequestHeaders.Accept.Clear();
httpClient2.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
httpClient2.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", tokenKey);

response = await httpClient2.PostAsync(uri, httpContent);
DubMan
  • 430
  • 3
  • 16
  • This solution worked great. i could even say new AuthenticationHeaderValue("Bearer", tokenKey); thanks alot! – Cees Jul 15 '21 at 05:31
0

I had the same problem, I solved using :

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(endPoint);

request.Headers["Authorization"] = "Basic jMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYzZl";

where the string after Basic is an encoded string from Postman, the option is 'code'.

I hope this helps!

Harshit
  • 1,510
  • 19
  • 42
TexWebDev
  • 23
  • 1
  • 7