Skip to main content

Integration in Business Central & Read JSON Data and store in Table : Using Http

Hi Readers,

In this article will see how we can create connection with external application using  HTTP and read the Json data & store it in business central.

In this scenario, if i will enter the ID then it will fill all the related details by getting information from third party application.

Step-(1) Firstly i have created the table and call the procedure on OnValidate trigger.

table 50102 "User Details API"
{
    DataClassification = ToBeClassified;

    fields
    {
        field(1; ID; Integer)
        {
            DataClassification = ToBeClassified;
            trigger OnValidate()
            var
                JsonReadAndWrite_CU: Codeunit "Json Write";

            begin
                JsonReadAndWrite_CU.JsonReadAndWrite(Rec);
            end;
        }
        field(2; Name; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(3; "User Name"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(4; "Email"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(5; "Street"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
        field(6; "Suite"; Text[50])
        {
            DataClassification = ToBeClassified;
        }
    }

    keys
    {
        key(PK; ID)
        {
            Clustered = true;
        }
    }
}

Step-(2) Then i have created the page which basically used to interact with user & see the output.

page 50103 "User Details API"
{
    PageType = List;
    ApplicationArea = All;
    UsageCategory = Lists;
    SourceTable = "User Details API";

    layout
    {
        area(Content)
        {
            repeater(List)
            {
                field(ID; ID) { ApplicationArea = All; }
                field(Name; Name) { ApplicationArea = All; }
                field("User Name"; "User Name") { ApplicationArea = All; }
                field(Email; Email) { ApplicationArea = All; }
                field(Street; Street) { ApplicationArea = All; }
                field(Suite; Suite) { ApplicationArea = All; }
            }
        }
    }
}

Step-(3) Now finally i have create a function which makes the connection using HTTP and get data from external application & store in Business Central table.

 Procedure JsonReadAndWrite(Var UserDetailsAPI: Record "User Details API")
    var
        UrlPath: Text;
        HttpClientVar: HttpClient;
        HttpResponseVar: HttpResponseMessage;
        HttpContentVar: HttpContent;
        Result: Text;
        //Method2
        HttpRequest: HttpRequestMessage;
        Output: Text;
        JObject: JsonObject;
        JToken: JsonToken;
        NewJObject: JsonObject;

    begin
        UrlPath := 'https://jsonplaceholder.typicode.com/users/' + Format(UserDetailsAPI.ID);
        HttpClientVar.Get(UrlPath, HttpResponseVar);
        if HttpResponseVar.IsSuccessStatusCode then begin
            HttpContentVar := HttpResponseVar.Content;
            HttpContentVar.ReadAs(Result);
            // Message(Result);

            //To store the content in Json Object
            JObject.ReadFrom(Result);
            JObject.Get('name', JToken);
            UserDetailsAPI.Name := JToken.AsValue().AsText();
            JObject.Get('email', JToken);
            UserDetailsAPI.Email := JToken.AsValue().AsText();
            JObject.Get('username', JToken);
            UserDetailsAPI."User Name" := JToken.AsValue().AsText();
            JObject.Get('address', JToken);
            if JToken.IsObject then begin
                JToken.WriteTo(Output);
                NewJObject.ReadFrom(Output);
                NewJObject.Get('street', JToken);
                UserDetailsAPI.Street := JToken.AsValue().AsText();
                NewJObject.Get('suite', JToken);
                UserDetailsAPI.Suite := JToken.AsValue().AsText();
            end else
                Message('Json Token is not found as Json Object.');

        end else
            Message('Connection not Established..Status Code is %1 & Reason is %2', HttpResponseVar.HttpStatusCode, HttpResponseVar.ReasonPhrase);
    end;

Output:-

Thanks for Reading!!

Comments

Popular posts from this blog

Flow Custom field to G/L Entry and other Posted tables : From Purchase Order to Posted Purchase invoice

Hi Readers, In this blog we will see how we can transfer data from " Purchase Header" to "Purchase Invoice Header" & "G/L Entry" table in Business Central. In this example, will create "Remarks" field on Purchase Header table and after posting, flow it to Purchase Invoice Header & G/L Entry tables: Firsly, create required fields ("Remarks") in below mentioned tables by creating table extensions: Purchase Header (38) Purch. Inv. Header (122) Gen. Journal Line (81)  G/L Entry (17) For the Purch. Inv. Header table, you can just create copy the field from purchase header and paste it in  Purch. Inv. Header  table. If the field ID No. is same for that field for both the tables then you don't have to code i.e, it automatically transfer that field data from Purch. Header to Purch. Inv. Header . Step-(1)   tableextension   50104  "Purchase Header Ext"  extends  "Purchase Header" {      fields   ...

Calculate Date : Using Date Formula and CalcDate Function in Navision/BC

 Hi Everyone, In this article we will see how we can Calculate Date by adding and subtracting No. of Days / Months based on CalcDate and DateFormula datatype. Here, I define three variables required for: (1) " No of Days " -  To define No. of Days / Months as required. You can also use these units denoted as: <Unit> = D | WD | W | M | Q | Y (D=day, WD=weekday, W=week, M=month, Q=quarter, Y=year). (2) " From Date " and " To Date "  Date type Variables to store calculated date in it. page   50103  "Date from Date Formula" {     PageType = Card;     ApplicationArea = All;     UsageCategory = Administration;     SourceTable =  Integer ;      layout     {          area( Content )         {    ...

The Txt2Al Conversion Tool: How to Export Dynamics NAV objects (.txt) and converting to AL

Hi folks, In this article, I will show you how you can use Txt2Al conversion tool that is the part of NAV 2018 and Dynamics 365 Business Central On-Premise. Using this Txt2Al conversion tool you can take existing Dynamics NAV objects that have been exported in .txt format and convert them into the new .al format and use these .al format file directly using Visual Studio Code to develop/build extensions for Dynamics 365 Business Central. Converting the NAV objects consists of following 2 steps: 1. Exporting the objects from C/SIDE [Either from Development Environment or using PowerShell Command] 2. Converting the objects to the new syntax. You can find Txt2Al tool in following location if you installed Dynamics 365 Business Central On-Premise on your machine: C:\Program Files (x86)\Microsoft Dynamics 365 Business Central\140\RoleTailored Client \Txt2Al.exe Steps to use the Txt2Al conversion tool:  Reference Step 1:  Compile your Dynamics NAV DB Step 2: ...