I'm trying to convert from RestClient from Postman to HttpClient
var client = new RestClient("https://uat-accounts.adp.com/auth/oauth/v2/token?
grant_type=client_credentials");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic
YTAwMWIxMzYtZGE3Ni00MTQ3LTlkNGUtNjI3OTIXXXX3MGM4OjVkZjdmNmI1LWI3OTAtNGRhMS1hYjgyLTNhOTUyMDc0XXXXXX==");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
I have to pass a .pem file and a private key, not sure how to do this, I have read the following links: How do you use Basic Authentication with System.Net.Http.HttpClient?
Converting code from RestSharp to HttpClient
Need help converting my RestSharp code to use HttpClient instead
But still not able to get the Token, please see below what I have done
String PemCertifcate = "-----BEGIN CERTIFICATE-----" +
"MIIFqjCCBJKgAwIBAgIQYH0C6rcSdQMirdct + L1mwjANBgkqhkiG9w0BAQsFADCB" +
"..............................................................." +
"-----END CERTIFICATE-----";
String PrivateKey= "-----BEGIN PRIVATE KEY-----"+
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCp / 42kIX2gQLhd" +
"-----END PRIVATE KEY-----";
String sEncode64Key = "YTAwMWIxMzYtZGE3Ni00MTQ3LTlkNGUtNjI3OTIXXXX3MGM4OjVkZjdmNmI1LWI3OTAtNGRhMS1hYjgyLTNhOTUyMDc0XXXXXX==";
//client.BaseAddress = new Uri("https://accounts.test.com/auth/oauth/v2/token?grant_type=client_credentials");
// client.DefaultRequestHeaders.Accept.Clear();
// client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", sEncode64Key);
// client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
MyAPIGet(client).Wait();
static async Task MyAPIGet(HttpClient cons)
{
try
{
String sEncode64Key = "YTAwMWIxMzYtZGE3Ni00MTQ3LTlkNGUtNjI3OTIXXXX3MGM4OjVkZjdmNmI1LWI3OTAtNGRhMS1hYjgyLTNhOTUyMDc0XXXXXX==";
Uri baseUri = new Uri("https://accounts.test.com/auth/oauth/v2/token?grant_type=client_credentials");
client.BaseAddress = baseUri;
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.ConnectionClose = true;
//Post body content
var values = new List<KeyValuePair<string, string>>();
values.Add(new KeyValuePair<string, string>("grant_type", "client_credentials"));
var content = new FormUrlEncodedContent(values);
//Basic Authentication
var base64EncodedAuthenticationString = sEncode64Key;
content.Headers.Add("Authorization", $"Basic {base64EncodedAuthenticationString}");
//make the request
var task = client.PostAsync("/oauth2/token", content);
var response = task.Result;
response.EnsureSuccessStatusCode();
string responseBody = response.Content.ReadAsStringAsync().Result;
Console.WriteLine(responseBody);
////This works to call the Worker API passing the Bear Token
//String access_token = "4f67318d-699a-465c-aa97-177e90cbf325";
// client.BaseAddress = new Uri("https://uat-accounts.adp.com/");
//client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", access_token);
// HttpResponseMessage response = await client.PutAsync("/auth/oauth/v2/token?grant_type=client_credentials", httpContent);
// string resultJson = response.Content.ReadAsStringAsync().Result; //Get token from here
// Console.WriteLine(resultJson);
//Console.ReadKey();
}
catch (HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ", e.Message);
Console.ReadKey();
}
}
Error Messages:InvalidOperationException: Misused header name. Make sure request headers are used with HttpRequestMessage, response headers with HttpResponseMessage, and content headers with HttpContent objects.