Я пытаюсь протестировать Call API Rest Rest от Salesforce, который имеет OAuth-аутентификацию через код Apex и работает с приведенной ниже ошибкой Line: 12, Column: 1
System.UnexpectedException: java.lang.IllegalArgumentException: invalid start or end
public with sharing class RetrieveD365Data {
//@future (callout=true)
public void getD365Data() {
RetrieveAzureToken atz = new RetrieveAzureToken();
String bearer = atz.getAzureData();
Http http = new Http();
HttpRequest req1 = new HttpRequest();
req1.setEndpoint('https://dev-xyz.com/data/Customers');
req1.setMethod('GET');
req1.setHeader('Authorization','Bearer '+bearer);
HttpResponse res1 = http.send(req1); //Error is thrown in this line
System.debug('Response Body=========' + res1.getBody());
}
}
Где класс RetrieveAzureToken
подобен приведенному ниже и это работает, как и ожидалось, и я могу вернуть ответ с токеном на предъявителя
global class RetrieveAzureToken {
private final String clientId = 'xxxxxxxxx';
private final String clientSecret = 'xxxxxxxxxx';
public String getAzureData()
{
String reqbody = 'grant_type=client_credentials&client_id='+clientId+'&client_secret='+clientSecret;
Http h = new Http();
HttpRequest req = new HttpRequest();
req.setBody(reqbody);
req.setMethod('POST');
req.setEndpoint('https://login.microsoftonline.com/tenant/oauth2/token');
HttpResponse res = h.send(req);
deserializeResponse resp1 = (deserializeResponse)JSON.deserialize(res.getbody(),deserializeResponse.class);
system.debug('Token from Azure :' + resp1.access_token);
return resp1.access_token;
}
public class deserializeResponse
{
public String token_type;
public String expires_in;
public String ext_expires_in;
public String expires_on;
public String not_before;
public String resource;
public String access_token;
}
}
Пожалуйста, позвольте мне выяснить, что мне здесь не хватает.