Я пытаюсь проверить адрес электронной почты пользователя перед его регистрацией, и у меня есть следующая конечная точка java, которая будет вызываться из приложения android:
@PostMapping("/user/register")
public ResponseEntity<UserResponse> register(@RequestBody UserDTO userDTO){
try {
User user = userService.createUser(userDTO);
if (user != null) {
UserResponse userResponse = new UserResponse(user,"success");
return new ResponseEntity<UserResponse>(userResponse, HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
} catch (EmailHasBeenTakenException emailHasBeenTakenException) {
UserResponse userResponse = new UserResponse(null,emailHasBeenTakenException.getMessage());
return new ResponseEntity<UserResponse>(userResponse, HttpStatus.BAD_REQUEST);
}catch (UsernameHasBeenTakenException usernameHasBeenTakenException) {
UserResponse userResponse = new UserResponse(null,usernameHasBeenTakenException.getMessage());
return new ResponseEntity<UserResponse>(userResponse, HttpStatus.BAD_REQUEST);
}
}
Теперь, когда я ' Я пытаюсь зарегистрироваться с помощью существующего электронного письма. Я хочу получить тело ответа и отобразить информацию о сообщении. Запрос на модификацию:
UserClient client = retrofit.create(UserClient.class);
Call<UserResponse> call = client.createAccount(user);
call.enqueue(new Callback<UserResponse> () {
@Override
public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
// JsonObject post = new JsonObject().get(response.body().toString()).getAsJsonObject();
System.out.println("Response is: "+ response.body());
Toast.makeText(RegistrationActivity.this, "Id is: " + response.body(), Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<UserResponse> call, Throwable t) {
Toast.makeText(RegistrationActivity.this, "something went wrong", Toast.LENGTH_SHORT).show();
}
});
UserResponse POJO:
public class UserResponse {
private User user;
private String message;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Класс пользователя:
public class User {
private Long id;
private String firstName;
private String lastName;
private String email;
private String username;
private String password;
public User (String firstName, String lastName, String email, String username, String password) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.username = username;
this.password = password;
}
public Long getId () {
return id;
}
}
Когда запрос сделан, я получаю следующий журнал ответов :
D/OkHttp: <-- 400 http://my_ip:8080/user/register/ (80ms)
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sun, 23 Feb 2020 15:59:01 GMT
Connection: close
D/OkHttp: {"user":null,"message":"Email abc@gmail.com has been taken!"}
<-- END HTTP (68-byte body)
I/System.out: Response is: null
Почему тело ответа пустое?