Friday, 23 May 2014

Calling REST API in salesforce

Hi

Today we can see about calling REST API in salesforce.

Step 1 :

If you want to call the REST API in salesforce, first we need to add that URL into Remote Stie Settings.

Goto setup ->Administration setup ->security Controls-> Remote site settings

Click on New
Give the name and Url in the Remote site page and click on save.

Once this URL is saved, we have to write a apex class to call this REST API. Rest API will return the JSON string, below is the JSON String. below is the array of data. if you have square bracket in your JSON then it is returning the array of the data.

String jsonString = '[ {
 "FirstName" : "test",
 "LastName" : "data1",
 "Email" : "test.data1@email.com",
 "Title" : "Mr"
 },
 {
 "FirstName" : "test",
 "LastName" : "data2",
 "Email" : "test.data2@email.com",
 "Title" : "Miss"
 },
 {
 "FirstName" : "test",
 "LastName" : "data3",
 "Email" : "test.data3@email.com",
 "Title" : "Mr"
 },
 {
  "FirstName" : "test",
 "LastName" : "data4",
 "Email" : "test.data4@email.com",
 "Title" : "Miss"
 },
 {
 "FirstName" : "test",
 "LastName" : "data5",
 "Email" : "test.data5@email.com",
 "Title" : "Mr"
 } ] ';

To get this JSON, we need to send http request, to get the data via REST API.

below is the code which is used to fetch the data frm REST API

 global class APIClass
 {
   @future(callout=true)
   public static void JSONAPICall(Account ac)
   {
  Http h = new Http();
  HttpRequest req = new HttpRequest();
  req.setMethod('GET');
  string url='                                                          ';
  req.setEndpoint(url);
  HttpResponse res = h.send(req);
  JSONParser parser = JSON.createParser(res.getBody());
  list<contact> contactsdata = new List<contact>();
        JSONParser parser = JSON.createParser(jsonstr);
        while (parser.nextToken() != null)
        {
            if (parser.getCurrentToken() == JSONToken.START_ARRAY)
            {
         
                while (parser.nextToken() !=  JSONToken.END_ARRAY)
                {
                    if (parser.getCurrentToken() == JSONToken.START_OBJECT)
                    {                    
                        contact ci = new contact();
                        while (parser.nextToken() !=  JSONToken.END_OBJECT)
                        {                        
                                if((parser.getCurrentToken() == JSONToken.FIELD_NAME) &&(parser.getText().tolowercase() == 'title'))
                                {
                                    parser.nextToken();
                                    ci.title = parser.getText();
                                }
                                if((parser.getCurrentToken() == JSONToken.FIELD_NAME) &&(parser.getText().tolowercase() == 'firstname'))
                                {
                                    parser.nextToken();
                                    ci.firstname = parser.getText();
                                }
                                if((parser.getCurrentToken() == JSONToken.FIELD_NAME) &&(parser.getText().tolowercase() == 'lastname'))
                                {
                                    parser.nextToken();
                                    ci.lastname = parser.getText();
                                }
                                if((parser.getCurrentToken() == JSONToken.FIELD_NAME) &&(parser.getText().tolowercase() == 'email'))
                                {
                                    parser.nextToken();
                                    ci.email = parser.getText();
                                }
if(ac != null)
ci.AccountId = ac.Id;
                         
                        }
                        contactsdata.add(ci);
                    }
                }
            }
        }
  if(contactsdata.size() > 0)
  {
   insert contactsdata;
  }
    }

  }

In the URL you have give your API URL, and out put of the API URL is JSON Data. After fetching the data we are inserting the data into contact object.


No comments:

Post a Comment