Пожалуйста, я пытаюсь отправить POST в openshift datagrid через REST с помощью Spring, и я получаю следующее:
2018-11-19 08: 21: 47.607 ОШИБКА 7297 --- [nio-8080-exec-2] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] выдало исключение [Ошибка обработки запроса; вложенное исключение - org.springframework.web.client.HttpClientErrorException: 401 не авторизовано] с основной причиной
org.springframework.web.client.HttpClientErrorException: 401 не авторизовано
мой код следующий:
@PostMapping("/cachedatagrid")
public ResponseEntity<String> postAccount(@RequestBody Sample samplep) {
RestTemplate restTemplate = new RestTemplate();
String resourceUrl
= "http://myapp/rest/default";
ResponseEntity<Sample> response;
HttpHeaders httpHeaders = this.createHeaders("user", "pwd");
Sample sample = new Sample();
sample.setName("sample");
HttpHeaders httpHeaders2;
httpHeaders2 = restTemplate
.headForHeaders(resourceUrl);
HttpEntity<Sample> requestUpdate = new HttpEntity<Sample>(sample, httpHeaders);
response = restTemplate.postForEntity(resourceUrl, requestUpdate , Sample.class);
return new ResponseEntity<String>("POST Response", HttpStatus.OK);
}
и содержимое заголовка:
private HttpHeaders createHeaders(String username, String password){
return new HttpHeaders() {{
String auth = username + ":" + password;
byte[] encodedAuth = Base64.encodeBase64(
auth.getBytes(Charset.forName("US-ASCII")) );
String authHeader = "Basic" + new String(encodedAuth);
set("Authorization", authHeader);
}};
}
Я не могу выяснить, что не так с createHeaders. Авторизация должна быть установлена.
Я звоню на почту, используя почтальона:
http://localhost:8080/cachedatagrid
Я сравнил свой код с несколькими кодами в Интернете и не пытался заставить его работать.
Пожалуйста, вы можете дать некоторые рекомендации по этому поводу? Я пару дней пытаюсь решить это.
Привет
Érico