Я застрял здесь с проблемой.Я пытаюсь сделать запрос к API Django из приложения Java.У меня есть команда curl из командной строки, которая работает как шарм ... но из Java я не могу понять это правильно.Итак ... команда curl:
curl -X POST --header 'Content-Type: application/x-www-form-urlencoded' --header 'Accept: application/json' -d 'username=clientname&password=somepassword' 'https://hostname.domain/api/v1/login'
Это дает мне тело ответа вроде:
{
"success": true,
"message": "Login OK",
"token": "iLCJhbGcoOIJIUzI1NiJ9.eyJuYW1lIjoiU0ZMT1JFUy...(truncated)"
}
Мой Java-код
public Optional<String> login() {
Form form = new Form();
form.param("username", USER);
form.param("password", PASS);
Entity<Form> requestEntity = Entity.form(form);
WebTarget target = this.client.target(LOGIN_URL);
Response response = target.request().accept(MediaType.APPLICATION_JSON).post(requestEntity);
this.logger.info(String.format("Response status: %s", response));
if (response.getStatus() == Status.OK.getStatusCode()) {
LoginResponseDTO loginDTO = response.readEntity(LoginResponseDTO.class);
return Optional.<String>of(loginDTO.getToken());
} else {
this.logger.warn(String.format("%s", response.getStatusInfo()));
this.logger.warn(String.format("Cannot log user '%s' in", USER));
return Optional.<String>empty();
}
}
Java-код,при вызове возвращает ответ BadRequest.Я проверил журнал Django, и тело POST кажется пустым, но запрос в java содержит форму, переданную как тело.Если у кого-нибудь есть подсказка о том, что я пропускаю, было бы здорово.
Заранее спасибо.