Автоматическая отправка запроса Post на сервер из приложения Springboot, для которого требуется хранилище ключей - PullRequest
0 голосов
/ 17 октября 2019

Приложение, которое я разрабатываю, должно отправлять пост-запрос каждый раз, когда событие происходит в определенной папке. Я построил 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. Я думаю, что я должен добавить хранилище ключей к моему запросу, и я застрял на этом этапе ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...