У меня есть следующий код, где я просто сделать запрос через https
к localhost
HTTPClient установить пост без фактического размещения
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(new FileInputStream(new File("keystore.p12")),
"password".toCharArray());
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
new SSLContextBuilder()
.loadTrustMaterial(null, new TrustSelfSignedStrategy())
.loadKeyMaterial(keyStore, "password".toCharArray()).build());
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build();
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
ResponseEntity<String> response = restTemplate.getForEntity(
"https://localhost:1810/bot", String.class);
, но теперь я хочу, чтобы послать запрос сообщения с телом, поэтому я добавил
HttpPost post = new HttpPost("https://localhost:1810/bot");
post.setHeader("Content-Type", "application/json");
StringEntity params =new StringEntity(" { \"message\": \"hello\", \"sessionID\": \"\", \"timestamp\": \"1480596337583\" } ");
post.setEntity(params);
, но теперь я не знаю, как я могу их объединить. Все, что я нашел, было Httpclient.execute(post
), но это послало бы его как запрос http
. Есть ли способ установить Httpclient
к способу Post
фактически не посылая его, потому что я должен дать ему в качестве параметра в
ClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
или есть другое решение?
но что бы отправить запрос сообщения без использования сертификата правильно? здесь 'ClientHttpRequestFactory requestFactory = новый HttpComponentsClientHttpRequestFactory ( HTTPClient);' я должен добавить HTTPClient, так что мне нужно объединить '' HttpClient' с HttpPost' фактически не отправляя их – user7236363