I have a problem in AX 2012 when I call API by Https URL give me this error
(The request was aborted: Could not create SSL/TLS secure channel)
but when I test code in Dynamic 365 It Work
This My code:
str destinationUrl,requestJson, responseJson;
System.Net.HttpWebRequest request;
System.Net.HttpWebResponse response = new System.Net.HttpWebResponse();
CLRObject clrObj;
System.Byte[] bytes;
System.Text.Encoding utf8;
System.IO.Stream requestStream, responseStream;
System.IO.StreamReader streamReader;
System.Exception ex;
System.Net.WebHeaderCollection httpHeader;
System.Net.ServicePoint servicePt;
System.Net.ServicePointManager ServicePointManager;
str byteStr;
System.Byte[] byteArray;
System.IO.Stream stream;
System.IO.Stream dataStream;
int secProtocol;
boolean ssl3,tls,tls11,tls12,tls13;
destinationUrl = 'https://...';
requestJson = @'MyJsonData';
try
{
new InteropPermission(InteropKind::ClrInterop).assert();
httpHeader = new System.Net.WebHeaderCollection();
clrObj = System.Net.WebRequest::Create(destinationUrl);
request = clrObj;
utf8 = System.Text.Encoding::get_UTF8();
bytes = utf8.GetBytes(requestJson);
request.set_Method("POST");
httpHeader.Add("Client-Id","5...");
httpHeader.Add("Secret-Key","...");
httpHeader.Add("Cookie", "...");
request.set_Headers(httpHeader);
request.set_ContentType('application/json');
request.set_ContentLength(bytes.get_Length());
//ServicePointManager.Expect100Continue = true;
System.Net.ServicePointManager::set_Expect100Continue(true);
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::Tls12);
secProtocol = System.Net.ServicePointManager::get_SecurityProtocol();
ssl3 = secProtocol == enum2int(System.Net.SecurityProtocolType::Ssl3);
tls = secProtocol == enum2int(System.Net.SecurityProtocolType::Tls);
tls11 = secProtocol == enum2int(System.Net.SecurityProtocolType::Tls11);
tls12 = secProtocol == enum2int(System.Net.SecurityProtocolType::Tls12);
tls13 = secProtocol == 12288;
info(strFmt("SSL3 enabled: '%1' | TLS enabled: '%2' | TLS1.1 enabled: '%3' | TLS1.2 enabled: '%4' | TLS1.3 enabled: '%5'", ssl3, tls, tls11, tls12, tls13));
requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.get_Length());
response = request.GetResponse();
responseStream = response.GetResponseStream();
streamReader = new System.IO.StreamReader(responseStream);
responseJson = streamReader.ReadToEnd();
info(responseJson);
}
catch (Exception::CLRError)
{
ex = CLRInterop::getLastException().GetBaseException();
error(ex.get_Message());
}
I used this: System.Net.ServicePointManager::set_Expect100Continue(true); System.Net.ServicePointManager::set_SecurityProtocol(System.Net.SecurityProtocolType::Tls12);