function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Sparky JaneSparky Jane 

Slow Loading (HTTP Callouts)

Hello friends,

Below is my code. Here I'm retrieving the lead count on a visualforcepage from ReportLeadCount class. But it is taking long time for loading. Can anyone please suggest me to over come that slow loading process.

Thanks in advance,
Sparky Jane

public class ReportLeadCount {
    
    public String res {get; set;}
    public Map<String, Object> m1 {get; set;}
    public String test {get; set;}
    public Map<String, Object> m {get; set;}
    public String token1 {get; set;}
    public List<ReportRest> responseList {get; set;}
    public List<Object> lstAdd {get; set;}
    public Transient String openleadscount {get; set;} 
    public Transient String contactedleadscount {get; set;}
    public Transient String counseledleadscount {get; set;}
    public Transient String eligibilityleadscount {get; set;}
    public Transient String archiveleadscount {get; set;}
    public Transient String badleadscount {get; set;}
    public Transient String counselingsession {get; set;}
    public Transient String clientsnotsignedup {get; set;}
    public Transient String evaluations {get; set;}
    public Transient String fullservice{get; set;}
    public Transient String forecastsales{get; set;}
    public Transient String forecastlost{get; set;}
    public Transient String sales{get; set;}
    public List<User> userdetails {get; set;}
    
    public void authenticator() {
        
        // For Leads Open
        
        String username = 'username@testing.com';
        String password = 'password123'
        String loginUri = 'https://login.salesforce.com';
        String clientid = ' some client id';
        String clientSecret = 'client secret';
        
        HttpRequest req1 = new HttpRequest(); 
        req1.setMethod('GET');
        req1.setEndpoint(loginUri+'/services/oauth2/token');
        req1.setBody('grant_type=password' +
                     '&client_id=' + clientid +
                     '&client_secret=' + clientSecret +
                     '&username=' + EncodingUtil.urlEncode(username, 'UTF-8') +
                     '&password=' + EncodingUtil.urlEncode(password, 'UTF-8'));
        
        Http http = new Http();
        
        HTTPResponse res1 = http.send(req1);
        String output = res1.getBody();
        System.debug('responseeeeeeeeeeeeeeeeeeeeee'+output);
        m = (Map<String, Object>)JSON.deserializeUntyped(output);
        String token = (String)m.get('access_token');
        System.debug('tokennnnnnnnnnnnnnnnnnnnnn'+token);
        String addr = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/reportid?includedetails=true';
        
        HttpRequest req = new HttpRequest();
        req.setEndpoint( addr );
        req.setTimeout(60000);
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        
        HttpResponse response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w1 = (Map<String, Object>)w.get('T!T');
        List<Object> w6 = (List<Object>)w1.get('aggregates');
        Map<String, Object> s6 = (Map<String, Object>)w6.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s6.get('value'));
        openleadscount = String.valueOf(s6.get('value'));       
   
        // For Leads Contacted

        String addr2 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/reportid?includedetails=true';
        req.setEndpoint( addr2 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w2 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w12 = (Map<String, Object>)w2.get('T!T');
        List<Object> w62 = (List<Object>)w12.get('aggregates');
        Map<String, Object> s62 = (Map<String, Object>)w62.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s62.get('value'));
        contactedleadscount = String.valueOf(s62.get('value'));
        
        // For Leads Counseled

        String addr3 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/reporrt id?includedetails=true';
        req.setEndpoint( addr3 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w3 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w13 = (Map<String, Object>)w3.get('T!T');
        List<Object> w63 = (List<Object>)w13.get('aggregates');
        Map<String, Object> s63 = (Map<String, Object>)w63.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s63.get('value'));
        counseledleadscount = String.valueOf(s63.get('value'));
       
        // For E1,E2,E3,E4
        

        String addr4 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5Q?includedetails=true';
        req.setEndpoint( addr4 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w4 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w14 = (Map<String, Object>)w4.get('T!T');
        List<Object> w64 = (List<Object>)w14.get('aggregates');
        Map<String, Object> s64 = (Map<String, Object>)w64.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s64.get('value'));
        eligibilityleadscount = String.valueOf(s64.get('value'));
        
        // For Leads Archive for future interest
       

        String addr5 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5a?includedetails=true';
        req.setEndpoint( addr5 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w5 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w15 = (Map<String, Object>)w5.get('T!T');
        List<Object> w65 = (List<Object>)w15.get('aggregates');
        Map<String, Object> s65 = (Map<String, Object>)w65.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s65.get('value'));
        archiveleadscount = String.valueOf(s65.get('value'));
        
        // For Bad Data
        

        String addr6 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00Oa0000007xJqs?includedetails=true';
        req.setEndpoint( addr6 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w662 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w16 = (Map<String, Object>)w662.get('T!T');
        List<Object> w66 = (List<Object>)w16.get('aggregates');
        Map<String, Object> s66 = (Map<String, Object>)w66.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s66.get('value'));
        badleadscount = String.valueOf(s66.get('value'));
        
        // counseling session 
        
        String addr7 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xvfW?includedetails=true';
        req.setEndpoint( addr7 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w7 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w17 = (Map<String, Object>)w7.get('T!T');
        List<Object> w67 = (List<Object>)w17.get('aggregates');
        Map<String, Object> s67 = (Map<String, Object>)w67.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s67.get('value'));
        counselingsession  = String.valueOf(s67.get('value'));
        
        // for Clients not signed up
        
        String addr8 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5p?includedetails=true';
        req.setEndpoint( addr8 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w8 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w18 = (Map<String, Object>)w8.get('T!T');
        List<Object> w68 = (List<Object>)w18.get('aggregates');
        Map<String, Object> s68 = (Map<String, Object>)w68.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s68.get('value'));
        clientsnotsignedup = String.valueOf(s68.get('value'));        
        
        //for Clients signed up for evaluation ---- no report id
        
        //for Evaluations not converted to full service
        
        String addr9 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5f?includedetails=true';
        req.setEndpoint( addr9 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w9 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w19 = (Map<String, Object>)w9.get('T!T');
        List<Object> w69 = (List<Object>)w19.get('aggregates');
        Map<String, Object> s69 = (Map<String, Object>)w69.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s69.get('value'));
        evaluations = String.valueOf(s69.get('value'));        
        
        //for Full service signed up clients
        
        String addr10 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5k?includedetails=true';
        req.setEndpoint( addr10 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w10 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w110 = (Map<String, Object>)w10.get('T!T');
        List<Object> w610 = (List<Object>)w110.get('aggregates');
        Map<String, Object> s610 = (Map<String, Object>)w610.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s610.get('value'));
        fullservice = String.valueOf(s610.get('value')); 
        
        //For Forecast Sales
        // For Today (Display the amount),Week,Month,Year,So far
        
        String addr11 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00Oa0000007ulZP?includedetails=true';
        req.setEndpoint( addr11 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w11 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w111 = (Map<String, Object>)w11.get('T!T');
        List<Object> w611 = (List<Object>)w111.get('aggregates');
        Map<String, Object> s611 = (Map<String, Object>)w611.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s611.get('value'));
        forecastsales= String.valueOf(s611.get('value'));
        
        // For Forecast Lost

        String addr12 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5f?includedetails=true';
        req.setEndpoint( addr12 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w122 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w112 = (Map<String, Object>)w122.get('T!T');
        List<Object> w612 = (List<Object>)w112.get('aggregates');
        Map<String, Object> s612 = (Map<String, Object>)w612.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s612.get('value'));
        forecastlost = String.valueOf(s612.get('value'));  
                               
        //For Sales
        
        String addr13 = 'https://na19.salesforce.com/services/data/v32.0/analytics/reports/00O13000007xx5f?includedetails=true';
        req.setEndpoint( addr13 );
        req.setMethod('GET');
        req.setHeader('Content-Type','application/json');
        req.setHeader('Authorization', 'Bearer ' + token);
        response = http.send(req);
        system.debug('responseresponseresponse'+response.getBody());
        res = response.getBody();
        System.debug('resresresresres'+res);
        m1 = (Map<String,Object>)JSON.deserializeUntyped(res);
        Map<String, Object> w113 = (Map<String, Object>)m1.get('factMap');
        Map<String, Object> w1133 = (Map<String, Object>)w113.get('T!T');
        List<Object> w613 = (List<Object>)w1133.get('aggregates');
        Map<String, Object> s613 = (Map<String, Object>)w613.get(0);
        System.debug('SSSSSSSSSSSSSSSSSS'+s613.get('value'));
        sales= String.valueOf(s613.get('value')); 
        
        
        // User Details

        userdetails = [SELECT Name,Employee_Code__c,Title,Team_Name__c,Manager__c FROM User WHERE Id=:'00590000002zRtM'];
    }
}
ShashankShashank (Salesforce Developers) 
Looks like your code includes a callout, and hence the delay. Callout response depends on network and external endpoint performance as well.