Метод 1: использование классов HttpRequest и HttpResponse
public class MyBatchClass implements Database.Batchable<SObject>, Database.AllowsCallouts {
public void execute(Database.BatchableContext context, List<SObject> scope) {
// Create an HTTP request
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/endpoint');
request.setMethod('GET');
// Send the request and get the response
HttpResponse response = new Http().send(request);
// Process the response
if (response.getStatusCode() == 200) {
// Handle successful response
} else {
// Handle error response
}
}
}
Метод 2: использование класса Http с будущей аннотацией
public class MyBatchClass implements Database.Batchable<SObject> {
public void execute(Database.BatchableContext context, List<SObject> scope) {
// Make a callout using the @future annotation
makeCallout();
}
@future(callout=true)
public static void makeCallout() {
// Create an HTTP request
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/endpoint');
request.setMethod('GET');
// Send the request and get the response
HttpResponse response = new Http().send(request);
// Process the response
if (response.getStatusCode() == 200) {
// Handle successful response
} else {
// Handle error response
}
}
}
Метод 3: использование Apex с постановкой в очередь
public class MyBatchClass implements Database.Batchable<SObject> {
public void execute(Database.BatchableContext context, List<SObject> scope) {
// Make a callout using Queueable Apex
System.enqueueJob(new CalloutQueueable());
}
}
public class CalloutQueueable implements Queueable, Database.AllowsCallouts {
public void execute(QueueableContext context) {
// Create an HTTP request
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/endpoint');
request.setMethod('GET');
// Send the request and get the response
HttpResponse response = new Http().send(request);
// Process the response
if (response.getStatusCode() == 200) {
// Handle successful response
} else {
// Handle error response
}
}
}
Метод 4. Использование интерфейса HttpCalloutMock для тестирования
public class MyBatchClass implements Database.Batchable<SObject>, Database.AllowsCallouts {
public void execute(Database.BatchableContext context, List<SObject> scope) {
// Create an HTTP request
HttpRequest request = new HttpRequest();
request.setEndpoint('https://api.example.com/endpoint');
request.setMethod('GET');
// Associate a mock response with the request
Test.setMock(HttpCalloutMock.class, new MyHttpCalloutMock());
// Send the request and get the response
HttpResponse response = new Http().send(request);
// Process the response
if (response.getStatusCode() == 200) {
// Handle successful response
} else {
// Handle error response
}
}
}
public class MyHttpCalloutMock implements HttpCalloutMock {
public HttpResponse respond(HttpRequest request) {
// Create a mock response
HttpResponse response = new HttpResponse();
response.setHeader('Content-Type', 'application/json');
response.setBody('{"status":"success"}');
response.setStatusCode(200);
return response;
}
}