Requirement
CONSUME & CALL RESTFUL API USING X++, PASS REQUEST HEADER & POST JSON MESSAGE IN BODY – Client shared some REST APIs and REST web-services. The web-service or REST API needs to be consumed in Microsoft Dynamics 365 finance & operations using X++. The HttpWebRequest contains request headers i.e WebHeaderCollection which needs to be filled in API header. The content type is application/json. The request body input should be a valid JSON format and POST method of REST API will be called .HttpWebResponse will be received & deserialized in Microsoft Dynamics 365 fin & ops
Classes
HttpWebResponse, HttpWebRequest & WebHeaderCollection
Sample Code
System.Net.HttpWebRequest request;
System.Net.HttpWebResponse response;
CLRObject clrObj;
System.Exception ex;
System.Net.WebHeaderCollection httpHeader;
System.IO.Stream requestStream, responseStream;
Table1 table1;
System.IO.StreamWriter streamWriter;
try
{
select firstonly1 crosscompany table1;
httpHeader = new System.Net.WebHeaderCollection();
new InteropPermission(InteropKind::ClrInterop).assert();
clrObj = System.Net.WebRequest::Create("https:XXXXX");
request = clrObj;
// adding headers
httpHeader.Add("Schema-Type", "XXXXX");
httpHeader.Add("owner_id", "XXXXX");
httpHeader.Add("gstin", "XXXXX");
request.set_Headers(httpHeader);
request.Method = "POST";
request.ContentType = "application/json";
requestStream = request.GetRequestStream();
streamWriter = new System.IO.StreamWriter(request.GetRequestStream());
streamWriter.Write(table1.FieldString1); // writing JSON
streamWriter.Flush();
streamWriter.Close();
response = request.GetResponse();
System.IO.StreamReader streamRead = new System.IO.StreamReader(response.GetResponseStream());
info(streamRead.ReadToEnd());
}
catch
{
//exception
ex = CLRInterop::getLastException().GetBaseException();
error(ex.get_Message());
}
One thought on “D365 FO: Consume & Call Restful API using X++, pass request header & Post JSON message in body”