2016-12-01 1 views
0

У меня есть следующий код, где я просто сделать запрос через https к localhostHTTPClient установить пост без фактического размещения

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); или есть другое решение?

ответ

0

Вам нужно создать HttpHost, как этот

HttpHost host = new HttpHost("domain", 443, "https") 

, а затем использовать метод Execute(), который принимает хост аргумент

httpClient.execute(host, post) 
+0

но что бы отправить запрос сообщения без использования сертификата правильно? здесь 'ClientHttpRequestFactory requestFactory = новый HttpComponentsClientHttpRequestFactory ( HTTPClient);' я должен добавить HTTPClient, так что мне нужно объединить '' HttpClient' с HttpPost' фактически не отправляя их – user7236363