0

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.

  • I think this will help you: https://stackoverflow.com/questions/40014047/add-client-certificate-to-net-core-httpclient – GH DevOps Dec 10 '21 at 18:29

0 Answers0