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
golugolu 

attempt to dereference a null object in webservice callout

Hi,
Can anyone please help me in resolving the error? I am getting the error attempt the dereference a null object when i do a callout.
Issue is with listComActivity
Below is the code:
public class SendSMSFromTwilio implements Database.AllowsCallouts , Queueable{
    
    public String phNumber;
    public String smsBody;
    String accountSid;
    string token;
    String fromPhNumber;
    errorResponseWrapper erw;
    public List<communicat_o__Communicat_O_activity__c> listComActivity;
    List<communicat_o__API_Credentials__mdt> apiCredentials;
    public SendSMSFromTwilio(List<communicat_o__Communicat_O_activity__c> listOfComActivity){
        List<communicat_o__Communicat_O_activity__c> listComActivity = new List<communicat_o__Communicat_O_activity__c>();
        listComActivity.addAll(listOfComActivity);
        system.debug('sadasdasdasd' + listComActivity);
        apiCredentials = [Select id,
                          communicat_o__AccountSid__c,
                          communicat_o__EndPoint__c,
                          communicat_o__FromPhNumber__c,
                          communicat_o__Token__c,
                          communicat_o__Version__c
                          FROM communicat_o__API_Credentials__mdt
                          WHERE developername = 'Twilio'
                          LIMIT 1];
        accountSid = apiCredentials[0].communicat_o__AccountSid__c;
        token = apiCredentials[0].communicat_o__Token__c;
        fromPhNumber = apiCredentials[0].communicat_o__FromPhNumber__c;
    }
    
    public void processSms(){
        if (!(listComActivity.IsEmpty()))
            for (communicat_o__Communicat_O_activity__c comActivity : listComActivity){
                HttpRequest req = new HttpRequest();
                req.setEndpoint(apiCredentials[0].communicat_o__EndPoint__c + accountSid+'/SMS/Messages.json');
                req.setMethod('POST');
                String VERSION  = apiCredentials[0].communicat_o__Version__c;
                req.setHeader('X-Twilio-Client', 'salesforce-' + VERSION);
                req.setHeader('User-Agent', 'twilio-salesforce/' + VERSION);
                req.setHeader('Accept', 'application/json');
                req.setHeader('Accept-Charset', 'utf-8');
                req.setHeader('Authorization','Basic '+EncodingUtil.base64Encode(Blob.valueOf(accountSid+':' +token)));
                req.setBody('To='+EncodingUtil.urlEncode(phNumber,'UTF-8')+'&From='+EncodingUtil.urlEncode('+' + String.valueOf(comActivity.communicat_o__Phone_Number__c),'UTF-8')+'&Body='+comActivity.communicat_o__Message__c);
                Http http = new Http();
                HTTPResponse res = http.send(req);
                System.debug(res.getBody());
                if(res.getStatusCode()==201)
                    //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'SMS Sent Successfully'));
                    system.debug('SMS Sent Successfully');
                
                else{
                    
                    erw =(errorResponseWrapper)json.deserialize(res.getBody(),errorResponseWrapper.class);
                    //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,erw.message));
                    system.debug('erw' + erw.message);
                }
                
            }
    }
    public void execute(QueueableContext ctx) {
        this.processSms();
    }
    
    public class errorResponseWrapper{
        
        String code;
        String message;
        String moreInfo;
        String status;    
        
    }
    
    
}

 
Best Answer chosen by golu
Alain CabonAlain Cabon
Hi,

public List<communicat_o__Communicat_O_activity__c> listComActivity;
public SendSMSFromTwilio(List<communicat_o__Communicat_O_activity__c> listOfComActivity){
     List<communicat_o__Communicat_O_activity__c> listComActivity = newList<communicat_o__Communicat_O_activity__c>();
 

All Answers

Alain CabonAlain Cabon
Hi,

public List<communicat_o__Communicat_O_activity__c> listComActivity;
public SendSMSFromTwilio(List<communicat_o__Communicat_O_activity__c> listOfComActivity){
     List<communicat_o__Communicat_O_activity__c> listComActivity = newList<communicat_o__Communicat_O_activity__c>();
 
This was selected as the best answer
golugolu
ahh, that was a simple thing i missed. Thanks Alain.