서버 측에서 개체를 가져올 수 없다는 문제가 있습니다. 내가 GET 요청을 사용하여 서버 측에서 개체를 보내려고하고HTTP 메시지를 읽지 못했습니다. 필요한 요청 본문이 없습니다.
128870 [http-apr-8080-exec-1] WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.webserverconfig.user.entity.User com.webserverconfig.user.controller.UserController.login(com.webserverconfig.user.entity.User)
: 이 오류를 얻고있다. 이 객체를 사용하여 필드를 확인하려고합니다. (간단한 사용자 로그인 방법을 사용하고 있는데 userName
과 userPassword
을 확인하고 싶습니다.) 여기
서버 측에 내 코드는 다음과 같습니다 요청 :
@RequestMapping(value = "/login", method = RequestMethod.GET)
@ResponseStatus(value = HttpStatus.ACCEPTED)
public User login(@RequestBody User user) {
userValidator.validateUserLogin(user);
securityService.autoLogin(user.getUserName(), user.getUserPassword());
return user;
}
법인 사용자 :
@Entity
@Table(name = "Users")
public class User {
public User() {
}
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "Id", unique = true, nullable = false)
private long id;
@Column(name = "userName", nullable = false)
private String userName;
@Column(name = "userPassword", nullable = false)
private String userPassword;
@Transient
private String confirmPassword;
public long getId() {
return id;
}
public String getUserName() {
return userName;
}
public String getUserPassword() {
return userPassword;
}
public String getConfirmPassword() {
return confirmPassword;
}
public void setId(long id) {
this.id = id;
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
}
클라이언트 측 코드 :
private class LoginUserTask extends AsyncTask<Void, Void, User> {
@Override
protected User doInBackground(Void... voids) {
restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
User user = new User(userName, userPassword);
return restTemplate.getForObject(URL.getUserLogin(), User.class, user);
}
@Override
protected void onPostExecute(User user) {
responseEntity = restTemplate.getForEntity(URL.getUserLogin(), String.class);
HttpStatus responseStatus = responseEntity.getStatusCode();
if(responseStatus.equals(HttpStatus.ACCEPTED)){
view.makeToast("User login completed " + user.getUserName());
} else {
view.makeToast("User login or password is not correct");
}
}
}
내가 실종 무엇인가? 아무도 이걸로 도와 줄 수 없어?
'onPostExecute'이지만'get' 요청을 확인하고 있습니까? 그래서'@ RequestBody' 어노테이션이있는'login' 함수에서 시체를 찾을 수 없습니까? – Nathan
@Nathan 잘못된 요청 방법을 사용하고 있습니까? 나는 의미한다 - GET – Andrew
@ 네이슨 오, 나는 그것을 얻는다 고 생각한다. getForEntity 메서드에서 객체를 보내야합니까? – Andrew