我正在使用jersey使用REST,并像这样发送原始json。我的代码
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("register")
public Response register(@QueryParam("email") String email, @QueryParam("username") String userName, @QueryParam("password") String password) {
System.out.println("username: " + userName);
System.out.println("password: " + password);
System.out.println("email: " + email);
}
但我收到
//Output using raw json
username: null,
password: null,
email: null
我不知道为什么。如果我使用Param (在Postman中的Send按钮左边的按钮并设置键值),而不是Raw json。它起作用了
//Output when use param
username: abc,
password: 123456
email: email
注意:我确实用内容-Type: application/json设置了标题
发布于 2017-11-24 22:19:19
正如我在注释中提到的,您需要将数据作为查询参数的一部分传递,或者更改寄存器方法签名以接受包含用户名、密码和电子邮件字段的pojo。
将方法更改为如下所示:
@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("register")
public Response register(User user) {
System.out.println("username: " + user.getUsername() );
System.out.println("password: " + user.getPassword() );
System.out.println("email: " + user.getEmail() );
}
public class User{
private String username = null;
private String password= null;
private String email = null;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
https://stackoverflow.com/questions/47480422
复制相似问题