dmitriev-aal@VDI-Dmitriev-A:~/Desktop/rshbintech/intrabank/hrplatform/hrtech$ sed -n '1,220p' adaptation/src/main/java/ru/rshbintech/intrabank/hrplatform/hrtech/adaptation/service/HttpService.java
package ru.rshbintech.intrabank.hrplatform.hrtech.adaptation.service;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.hc.client5.http.classic.HttpClient;
import org.apache.hc.client5.http.classic.methods.HttpGet;
import org.apache.hc.client5.http.classic.methods.HttpPost;
import org.apache.hc.core5.http.ClassicHttpRequest;
import org.apache.hc.core5.http.HttpStatus;
import org.apache.hc.core5.http.io.entity.EntityUtils;
import org.apache.hc.core5.http.io.entity.StringEntity;
import org.apache.hc.core5.http.message.BasicHeader;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.io.IOException;
@Slf4j
@Service
@RequiredArgsConstructor
public class HttpService {
private final HttpClient httpClient;
private final ObjectMapper objectMapper;
public <T> T postRequest(String url, Object requestBody, Class<T> responseType) {
try {
HttpPost request = new HttpPost(url);
String jsonBody = objectMapper.writeValueAsString(requestBody);
request.setEntity(new StringEntity(jsonBody));
request.setHeader(new BasicHeader("Content-Type", "application/json"));
request.setHeader(new BasicHeader("Accept", "application/json"));
var responseBody = execute(request);
return StringUtils.hasText(responseBody)
? objectMapper.readValue(responseBody, responseType)
: null;
} catch (IOException e) {
log.error("An exception occurred during serialization/deserialization: {}", e.getMessage(), e);
return null;
}
}
public <T> T getRequest(String url, Class<T> responseType) {
try {
HttpGet request = new HttpGet(url);
request.setHeader(new BasicHeader("Content-Type", "application/json"));
request.setHeader(new BasicHeader("Accept", "application/json"));
var responseBody = execute(request);
return StringUtils.hasText(responseBody)
? objectMapper.readValue(responseBody, responseType)
: null;
} catch (IOException e) {
log.error("An exception occurred during serialization/deserialization: {}", e.getMessage(), e);
return null;
}
}
private String execute(ClassicHttpRequest request) throws IOException {
return httpClient.execute(request,
response -> {
if (response.getCode() >= HttpStatus.SC_OK
&& response.getCode() < HttpStatus.SC_MULTIPLE_CHOICES) {
return EntityUtils.toString(response.getEntity());
}
log.error("An exception occurred during send request:{}\nstatusCode:{}\nresponseBody:{}",
request, response.getCode(), response.getEntity());
return null;
});
}
}