This tutorial shows how to make HTTP callout from an APEX trigger using Future method.
Step 1: Create Apex Class
First step is to create an apex class. After you login, click on Setup > Develop > Apex Classes > New.Step 2: Write future method
Write future method that calls external service.public class AccountUpdater { //Future annotation to mark the method as async. @Future(callout=true) public static void updateAccount(String id, String name) { //construct an HTTP request HttpRequest req = new HttpRequest(); req.setEndpoint('http://cheenath.com/tutorial/sfdc/sample1/data.txt'); req.setMethod('GET'); //send the request Http http = new Http(); HttpResponse res = http.send(req); //check the response if (res.getStatusCode() == 200) { //update account Account acc = new Account(Id=id); acc.Description = res.getBody(); update acc; } else { System.debug('Callout failed: ' + res); } } }
Step 3: Add external server to Remote Sites
Click Setup > Security Controls > Remote Site Settings > New Add external site name and endpoint URLSite:cheenath endpoint url:http://cheenath.com/
Step 4: Create APEX trigger
Click Setup > Customize > Accounts > Triggers > New
And create the following trigger:
trigger descriptionUpdater on Account (after insert) { System.debug('Making future call to update account'); for (Account acc : Trigger.New) { //Call future method to update account //with data from external server. //This is a async calls, it returns right away, after //enqueuing the request. AccountUpdater.updateAccount(acc.Id, acc.Name); } }
No comments:
Post a Comment