I have a custom Obj, and try to realize a POST method.
But I get an Error: System.NullPointerException: null argument for JSONGenerator.writeStringField()
What is wrong here?
public static void postCalloutResponseContents() {
Settings__c settings = [SELECT ConsumerKey__c, ClientSecret__c, Username__c, Password__c, SecurityToken__c
FROM Settings__c
WHERE Name = 'OurSettings'];
String consumerKey = settings.ConsumerKey__c;
String consumerSecret = settings.ClientSecret__c;
String username = settings.Username__c;
String password = settings.Password__c + settings.SecurityToken__c;
String requestBody = 'grant_type=password&client_id=' + consumerKey +'&client_secret=' + consumerSecret +
'&username=' + username + '&password='+password;
Http ourHttp = new Http();
HttpRequest request = new HttpRequest();
request.setBody(requestBody);
request.setMethod('POST');
request.setEndpoint(System.Label.Job_Advertisement_URL + '/services/oauth2/token');
Position__c pos = [SELECT Skills_Required__c FROM Position__c LIMIT 1];
HttpResponse response = ourHttp.send(request);
OAuth2 objAuthenticationInfo = (OAuth2)JSON.deserialize(response.getbody(), OAuth2.class);
System.debug('BODY: ' + response.getBody());
if(objAuthenticationInfo.access_token != null){
JSONGenerator gen = JSON.createGenerator(true);
gen.writeStartObject();
gen.writeStringField('Position', pos.Skills_Required__c);
String jsonS = gen.getAsString();
System.debug('jsonMaterials: ' + jsonS);
Http finalHttp = new Http();
HttpRequest finalRequest = new HttpRequest();
finalRequest.setHeader('Authorization','Bearer '+ objAuthenticationInfo.access_token);
finalRequest.setHeader('Content-Type','application/json');
finalRequest.setHeader('accept','application/json');
finalRequest.setBody(jsonS);
finalRequest.setMethod('POST');
finalRequest.setEndpoint(System.Label.Job_Advertisement_URL + '/services/apexrest/jobAdvertisementShow');
HttpResponse finalResponse = finalHttp.send(finalRequest);
System.debug('RESPONSE BODY: '+ finalResponse.getBody());
}
}
public class OAuth2{
public String id{get;set;}
public String issued_at{get;set;}
public String instance_url{get;set;}
public String signature{get;set;}
public String access_token{get;set;}
}
Skills_Required__c
value that you're pulling is, in fact, not null?