/** * Sends a POST request and returns the response. * * @param endpoint The endpoint to send the request to. * @param responseClass The class to deserialise the Json response to. Can be null if no response * message is expected. * @param headers Any additional headers to send with this request. You can use {@link * org.apache.http.HttpHeaders} constants for header names. * @param <T> The type to deserialise the response to. * @return A {@link Response} containing the deserialised body, if any. * @throws IOException If an error occurs. */ public <T> Response<T> delete(Endpoint endpoint, Class<T> responseClass, NameValuePair... headers) throws IOException { // Create the request HttpDelete delete = new HttpDelete(endpoint.url()); delete.setHeaders(combineHeaders(headers)); // Send the request and process the response try (CloseableHttpResponse response = httpClient().execute(delete)) { T body = deserialiseResponseMessage(response, responseClass); return new Response<>(response.getStatusLine(), body); } }