【发布时间】:2021-08-23 22:56:14
【问题描述】:
我遇到了一个问题,我挣扎了 5 个小时。 我已经使用 Jersey 在 Eclipse 中创建了一个 Java API(现在仅用于测试),这是我第一次创建 API。
我正在使用 Postman 进行测试。
当调用 GET 方法只返回一个字符串“Hello”时,它工作得很好。
问题是当我尝试接受 Person 类的对象作为输入参数并且只返回字符串“Hello”的 POST 方法时,我得到内部服务器错误。我知道我现在没有使用 Person 对象,但我只是在测试 Postman 的输入参数并且它不起作用。 我试图将 API 中的函数更改为没有输入参数而只是 POST,它的工作原理就是这样,它会打印“Hello”,但我需要那个输入参数以备后用...... 问题可能是在 Postman 的 xml 代码中创建对象的某个地方,我不知道。 欢迎提出任何建议。
这里是 API 的代码,其中包含 get 和 post 方法
@Path("/employee")
public class API {
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path("/examplepost")
public String examplePost(Person p) {
return "Hello";
}
@GET
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path("/exampleget")
public String exampleGet() {
return "Hello";
}
}
这是 Person 类:
@XmlRootElement(name = "person")
public class Person {
private String name;
private int age;
private int id;
public Person(String name, int age, int id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
public Person() {
super();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString(){
return id+"::"+name+"::"+age;
}
}
这些是 Postman 的结果
【问题讨论】:
-
尝试在 post 方法参数中添加@RequestBody:public String examplePost(@RequestBody Person p)
-
@aang13 我尝试这样做,但我收到错误“RequestBody 无法解析为类型”,并且没有导入它
-
尝试导入这个import org.springframework.web.bind.annotation.RequestBody;
-
@aang13 也没有解决,我没有在我的项目中使用 Spring,我从未使用过 Spring,我只是从我在 yt 上找到的教程中获得了 Jersey,但显然他们没有这个问题。
-
你能检查你的日志中是否有任何带有单词 JAXBContext 的警告。
标签: java api post jersey postman