Использование RestTemplate
дает мне другой ответ по сравнению с использованием CloseableHttpClient
, даже после того, как я установил CloseableHttpClient
в качестве httpClient
в фабрике запросов.
Использование CloseableHttpClient
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("http://localhost:8080/login/request.do");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("email", "abc@abc,com"));
params.add(new BasicNameValuePair("password", "abc123"));
params.add(new BasicNameValuePair("checkSum", "12343223ew42345rweawfdsfd"));
params.add(new BasicNameValuePair("action", "signin"));
params.add(new BasicNameValuePair("dojo.preventCache", "12342353425"));
httpPost.setEntity(new UrlEncodedFormEntity(params));
CloseableHttpResponse response = client.execute(httpPost);
if (200 == response.getStatusLine().getStatusCode()) {
String data = EntityUtils.toString(response.getEntity());
System.out.println(data);
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(data);
JsonNode name = root.path("secureToken");
secureToken = name.asText();
}
client.close();
Использование RestTemplate
final RestTemplate restTemplate = new RestTemplate();
final HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
final CloseableHttpClient httpClient = HttpClientBuilder.create().build();
factory.setHttpClient(httpClient);
restTemplate.setRequestFactory(factory);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("email", "abc@abc.com");
map.add("password", "abc123");
map.add("checkSum", "12343223ew42345rweawfdsfd");
map.add("action", "signin");
map.add("dojo.preventCache", "12342353425");
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(map, headers);
ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://localhost:8080/login/request.do", request, String.class);
if(responseEntity.getStatusCode().is2xxSuccessful())
{
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(responseEntity.getBody());
JsonNode name = root.path("secureToken");
secureToken = name.asText();
}
Я получаю код ответа 200, когда я использую CloseableHttpClient
, тогда как я получаю 302, когда я использую RestTemplate
.
Если я установлю RedirectStrategy
на LaxRedirectStrategy
, он вернет мне код состояния 200, но ответ отличается от того, что я получаю от CloseableHttpClient
. Я получаю ответ об окончательном пользовательском интерфейсе, который отображается при входе в систему и не дает мне токен.