Thursday, October 23, 2025

call API using x++ D365fo

public void callAPI

{  

System.Net.HttpWebRequest    request;

 System.Net.HttpWebResponse   response;

 System.IO.Stream             dataStream;

 System.IO.StreamReader       reader;

 System.Text.Encoding         encoding = System.Text.Encoding::UTF8;

 System.Text.StringBuilder    responseBuilder = new System.Text.StringBuilder();

 System.Byte[]                byteArray;

 str url ="https://sample.com";

 str body = your request body;

 str accessToken = "euwqyeiuqwiyiuwq";

 try

 {

     request = System.Net.WebRequest::Create(url) as System.Net.HttpWebRequest;

     request.set_Method("POST");

     request.set_ContentType("application/json");

     System.Net.WebHeaderCollection headers = request.get_Headers();

     headers.Add("Access-Token", accessToken);


     byteArray = encoding.GetBytes(body);

     request.set_ContentLength(byteArray.get_Length());


     // This line may throw if headers/content-length/content-type are not set properly

     dataStream = request.GetRequestStream();

     dataStream.Write(byteArray, 0, byteArray.get_Length());

     dataStream.Close();


     response = request.GetResponse() as System.Net.HttpWebResponse;

     dataStream = response.GetResponseStream();

     reader = new System.IO.StreamReader(dataStream, encoding);


     str line = reader.ReadLine();

     while (!CLRInterop::isNull(line))

     {

         responseBuilder.Append(line);

         line = reader.ReadLine();

     }

     reader.Close();

     dataStream.Close();

     response.Close();


     str responseString = responseBuilder.ToString();

    readJsonRequest(responseString );

}

public static void readJsonRequest(str _response)

{

    System.IO.StreamReader   reader;

    System.Text.Json.JsonDocument doc;

    System.Text.Json.JsonElement  root, message, transactionSet, hlLoop, item;

    Newtonsoft.Json.Linq.JObject  contractData    = Newtonsoft.Json.JsonConvert::DeserializeObject(_response);


    Newtonsoft.Json.Linq.JObject  dataObject = contractData.GetValue('data');

    Newtonsoft.Json.Linq.JObject  taxonomyObject = dataObject.GetValue('details');

    Newtonsoft.Json.Linq.JObject  categoriesArray = taxonomyObject.GetValue('categories');

    Newtonsoft.Json.Linq.JArray  edgesArray = categoriesArray.GetValue('item');

    for (int i = 0; i < edgesArray.Count; i++)

    {

        Newtonsoft.Json.Linq.JObject    currentObject = edgesArray.get_item(i);

        Newtonsoft.Json.Linq.JObject    nodeObject =   currentObject.GetValue('node');

        str id =  nodeObject.GetValue('id').ToString();

        str name =  nodeObject.GetValue('name').ToString();

        str fillName =  nodeObject.GetValue('unitPrice').ToString();

    }


}

Call API using x++ D365FO

 System.Net.HttpWebRequest    request; System.Net.HttpWebResponse   response; System.IO.Stream             dataStream; System.IO.StreamReade...