Accessing the Webapi using the C# code and that WebApi is
having SSL security.
Step 1: You have
to install the SSL certificate into your local system and that you can check
into MMC.
You should have the pfx file to install the certificate; you
can follow the below steps to install certificates.
Step 2: You have
to read the certificate by the thumbprint or by name, pass it to your code
header like below; Code snippet to read the certificate as:
Need to import below namespace; using
System.Security.Cryptography.X509Certificates;
/// <summary>
/// Creating the certifactes
/// </summary>
/// <returns></returns>
private static X509Certificate GetClientCert()
{
X509Store store = null;
try
store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
/// Getting certificate by thumbprint
var certs = store.Certificates.Find(X509FindType.FindByThumbprint,
"8e6cb255856e123457c3c395d12345758c0bf9b9", true); /// Generating the
///
/// getting thye certificate by name need to pass full name
var certName = store.Certificates.Find(X509FindType.FindBySubjectName,
"mycert.com", true); /// Generating the
if (certs.Count == 1)
{
var cert = certs[0];
return cert;
}
}
finally
{
if (store != null)
store.Close();
}
return null;
}
Step 3: Asyn code to call the web api by passing
the certificates and partner header,;
/// <summary>
/// Calling the get sub to access the webapi
/// </summary>
/// <returns></returns>
public static async Task<GetPIDetail> GetSub()
{
/// Please check with the WEB api url and the way of paramter
passing it can be like https://getmscode/api/v1/Commerce/CustorDetail/1106671338454426
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://getmscode/api/v1/Commerce/CustorDetail?puid=1106671338454426"); // Pass the API URL
request.ContentType = "application/json";
request.ClientCertificates.Add(GetClientCert());
request.Headers.Add("x-partnername", "SOME"); /// If there is any partner type
that you need to pass from header
try
{
List<GetPIDetail> objdeviceService = new List<GetPIDetail>();
using (WebResponse webResponse = await request.GetResponseAsync())
{
using (Stream webStream =
webResponse.GetResponseStream())
{
StreamReader
responseReader = new StreamReader(webStream);
string response = await responseReader.ReadLineAsync();
objdeviceService =
Newtonsoft.Json.JsonConvert.DeserializeObject<List<GetPIDetail>>(response);
}
}
return objdeviceService.FirstOrDefault();
}
catch (WebException we)
{
string webExceptionMessage = we.Message;
}
return null;
}
Step 4: Calling of above method to get the records.
private static async Task Convert()
{
var value = await GetSub();
string val = string.Empty;
if(value != null)
{
val = value.AccountId;
}
else
{
val = "it is null";
}
Console.WriteLine(val);
}
No comments:
Post a Comment