【发布时间】:2016-07-16 11:44:59
【问题描述】:
我正在使用 ResTemplate 在客户端中发布用户对象。但是当我使用 postForObject 方法时,会出现未解决的编译问题The method postForObject(URI, Object, Class<T>) in the type RestTemplate is not applicable for the arguments (URL, User, Class<User>)。我真的不明白???
这里的文件RestClientTest.java`
public class RestClientTest {
public static void main(String[] args) throws IOException{
// System.out.println("Rest Response" + loadUser("quypham"));
// URL url = new URL("http://localhost:8080/rest/user/create");
// rt.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
// rt.getMessageConverters().add(new StringHttpMessageConverter());
// Map<String,String> vars = new HashMap<String,String>();
RestTemplate rt = new RestTemplate();
User user = new User();
user.setUserName("datpham");
user.setPassWord("12345");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,1960);
user.setBirthDay(calendar.getTime());
user.setAge(12);
String uri = new String("http://localhost:8080/rest/user/create");
User returns = rt.postForObject(uri, user,User.class);
// createUser(user);
System.out.println("Rest Response" + loadUser("datpham"));
}
这里文件UserRestServiceController
@Controller
public class UserRestServiceController {
@Autowired
public UserDao userDao;
@RequestMapping(value = "/rest/user/create",method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void addUser(@RequestBody User user){
userDao.save(user);
}
我编辑了String uri,但遇到新的以下错误:
2016 年 3 月 29 日下午 1:57:43 org.springframework.web.client.RestTemplate handleResponseError 警告:POST 请求 “http://localhost:8080/rest/user/create”导致 400(坏 要求);在线程“main”中调用错误处理程序异常 org.springframework.web.client.HttpClientErrorException: 400 错误 要求在 org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) 在 org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:588) 在 org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:546) 在 org.springframework.web.client.RestTemplate.execute(RestTemplate.java:502) 在 org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:330) 在 edu.java.spring.service.client.RestClientTest.main(RestClientTest.java:45)
这里是User.java
@Entity
@Table(name = "brotheruser",uniqueConstraints={@UniqueConstraint(columnNames="username")})
@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
// @Enumerated(EnumType.STRING)
// @Column(name = "gender", nullable = false)
//
// public Gender getGender() {
// return gender;
// }
// public void setGender(Gender gender) {
// this.gender = gender;
// }
@Id
@Column(name = "username", unique = true, nullable = false)
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Column(name = "password", nullable = false)
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@JsonSerialize(using = DateSerializer.class)
// @JsonDeserialize(using = DateDeserializer.class)
@Column(name = "birthday", nullable = false)
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
@Column(name="age", nullable = false)
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
private String userName;
private String passWord;
private Date birthDay;
private Integer age;
// private Gender gender;
}
【问题讨论】:
-
向我们展示您的用户类!,请
-
你为什么使用 DtaeSerializer.class - 你没有权限...日期类型会自动序列化
标签: spring resttemplate