Hello Community,
We have an issue reading XML coming with SSL Certificate, with https URL. Example of the URL is like this : https://site.com/page.php?key=xxx&date=2018-07-15
This URL shows a page with XML structure. I can read and save it to table, if it comes with http and no ssl certificate. But when it comes with ssl https, it gives an exception like below:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.GetResponse()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.Dynamics.AX.ManagedInterop.ClrBridgeImpl.InvokeClrInstanceMethod(ClrBridgeImpl* , ObjectWrapper* objectWrapper, Char* pszMethodName, Int32 argsLength, ObjectWrapper** arguments, Boolean* argsAreByRef, Boolean* isException)
I read it with following code:
System.Net.WebResponse webResponse;
System.Net.HttpWebRequest httpWebRequest;
System.Net.WebHeaderCollection webHeaderCollection;
System.IO.StreamReader streamReader;
System.IO.Stream stream;
System.Exception netExcepn;
str xmlOut;
XmlDocument xmlDocument;
XmlNodeList xmlNodeList;
XmlNode mainNode;
XmlNode childNode;
#define.ServiceTimeout(5000)
#define.ServiceURL(xmlAddress)
#define.mainNodeName('orders')
#define.childNodeName('order')
#define.HttpWebRequestMethod("GET")
#define.HttpWebRequestContentType("application/xml")
#define.HttpHeaderAuthorization("Authorization")
if(this.validateURL(xmlAddress))
{
try
{
httpWebRequest = System.Net.WebRequest::CreateHttp(#ServiceURL);
httpWebRequest.set_Method(#HttpWebRequestMethod);
httpWebRequest.set_ContentType(#HttpWebRequestContentType);
httpWebRequest.set_Timeout(#ServiceTimeout);
//httpWebRequest.set_ClientCertificates(
webHeaderCollection = httpWebRequest.get_Headers();
webResponse = httpWebRequest.GetResponse();
stream = webResponse.GetResponseStream();
streamReader = new System.IO.StreamReader(stream);
info("@QQL940");
}
catch(Exception::CLRError)
{
netExcepn = CLRInterop::getLastException();
info(netExcepn.ToString());
}
}
else
{
streamReader = new System.IO.StreamReader(xmlAddress);
info("@QQL941");
}
if(!sourceId)
{
checkFailed("@QQL946");
return;
}
xmlOut = streamReader.ReadToEnd();
xmlDocument = XmlDocument::newXml(XMLOut);
mainNode = xmlDocument.selectSingleNode(#mainNodeName);
xmlNodeList = mainNode.selectNodes(#childNodeName);
childNode = xmlNodeList.nextNode();
while (childNode)
{
this.parseXML(childNode);
childNode = xmlNodeList.nextNode();
}
info("@QQL942");
// --------------------- READ FROM XML-----------------
}
Can you please help me to solve this problem.
Thanks in advance.