Приложение, которое я разрабатываю, должно отправлять пост-запрос каждый раз, когда событие происходит в определенной папке. Я построил JSON, который я хочу опубликовать.
Моя проблема заключается в следующем: запрос должен использовать сертификат P12. Для этого я использовал:
keytool -importkeystore -srcstoretype PKCS12 -srckeystore MYCERTIFICATE.p12 -destkeystore keystore.jks -deststoretype pkcs12
Я установил файл yaml, который содержит информацию о хранилище ключей:
server:
ssl:
key-store-type: PKCS12
key-store: 'classpath:keystore.jks'
key-store-password: password
key-alias: macsf_c
Наконец, я создал метод, который отправляет запрос на удаленный сервер:
public DocumentDto sendRequest(DocumentDto documentDto) throws IOException {
// set the URL to send the request
URL url = new URL(properties.getProperty("signature.api.url.full"));
// opening the connection
HttpURLConnection con = (HttpURLConnection)url.openConnection();
// set protocol, accept & content type format
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json; utf-8");
con.setRequestProperty("Accept", "application/json");
con.setDoOutput(true);
System.out.println(con.toString());
// create the JSON String
ObjectMapper mapper = new ObjectMapper();
// for test purpose : generate the JSON file
mapper.writeValue(new File("C:\\Users\\Dvera\\Documents\\testSignature\\document.json"), documentDto);
// convert an oject to a json string
String jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(documentDto);
try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInString.getBytes("utf-8");
os.write(input, 0, input.length);
}
// read the response
try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
}
System.out.println(jsonInString);
return null;
}
На самом деле я не работаю с типом возврата. Моя проблема в том, что у меня ошибка 403. Я думаю, что я должен добавить хранилище ключей к моему запросу, и я застрял на этом этапе ...