1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
public static string SoapRequest(String orderRequest)
{
try
{
String soapRequest = ESBManager.Read(TPL.SOAP_REQUEST);
soapRequest = String.Format(soapRequest, orderRequest);
byte[] buffer = Encoding.ASCII.GetBytes(soapRequest);
//TEST DIT 33576
//You must change the path to point to your .cer file location.
X509Certificate Cert = X509Certificate.CreateFromCertFile("C:\\Temp\\certificat.crt");
// Handle any certificate errors on the certificate from the server.
ServicePointManager.ServerCertificateValidationCallback = CertificateValidationCallBack;
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create("https://xxxxxxxxx");
//Test DIT 33576
WebReq.ClientCertificates.Add(Cert);
WebReq.UserAgent = "Client Cert Sample";
// Elargissement du timeout
WebReq.Timeout = 300000;
//Set the method/action type
WebReq.Method = "POST";
//We use form contentType
WebReq.ContentType = "soap/xml; charset=utf-8";
//The length of the buffer
WebReq.ContentLength = buffer.Length;
//We open a stream for writing the post data
Stream MyPostData = WebReq.GetRequestStream();
//Now we write, and after wards, we close. Closing is always important!
MyPostData.Write(buffer, 0, buffer.Length);
MyPostData.Close();
//Get the response handle, we have no true response yet!
HttpWebResponse WebResp = (HttpWebResponse)WebReq.GetResponse();
//Now, we read the response (the string), and output it.
Stream MyResponse = WebResp.GetResponseStream();
StreamReader MyResponseReader = new StreamReader(MyResponse);
//Read the response Stream and write it
String response = MyResponseReader.ReadToEnd();
return response;
}
catch (Exception ex)
{
throw ex;
}
}
//Test DIT 33576
private static bool CertificateValidationCallBack(
object sender,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
// If the certificate is a valid, signed certificate, return true.
if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.None)
{
return true;
}
// If there are errors in the certificate chain, look at each error to determine the cause.
if ((sslPolicyErrors & System.Net.Security.SslPolicyErrors.RemoteCertificateChainErrors) != 0)
{
if (chain != null && chain.ChainStatus != null)
{
foreach (System.Security.Cryptography.X509Certificates.X509ChainStatus status in chain.ChainStatus)
{
if ((certificate.Subject == certificate.Issuer) &&
(status.Status == System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.UntrustedRoot))
{
// Self-signed certificates with an untrusted root are valid.
continue;
}
else
{
if (status.Status != System.Security.Cryptography.X509Certificates.X509ChainStatusFlags.NoError)
{
// If there are any other errors in the certificate chain, the certificate is invalid,
// so the method returns false.
return false;
}
}
}
}
// When processing reaches this line, the only errors in the certificate chain are
// untrusted root errors for self-signed certificates. These certificates are valid
// for default Exchange server installations, so return true.
return true;
}
else
{
// In all other cases, return false.
return false;
}
} |
Partager