public static <T extends Serializable> T sendPostRequest(T element, Class<T> elementClass, String url,
String resource, String username, String password) throws RODAException {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
String basicAuthToken = new String(Base64.encode((username + ":" + password).getBytes()));
HttpPost httpPost = new HttpPost(url + resource);
httpPost.setHeader("Authorization", "Basic " + basicAuthToken);
httpPost.addHeader("content-type", "application/json");
httpPost.addHeader("Accept", "application/json");
try {
httpPost.setEntity(new StringEntity(JsonUtils.getJsonFromObject(element)));
HttpResponse response;
response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
int responseStatusCode = response.getStatusLine().getStatusCode();
if (responseStatusCode == 201) {
return JsonUtils.getObjectFromJson(responseEntity.getContent(), elementClass);
} else {
throw new RODAException("POST request response status code: " + responseStatusCode);
}
} catch (IOException e) {
throw new RODAException("Error sending POST request", e);
}
}