【问题标题】:Rest POST request with jersey用球衣休息 POST 请求
【发布时间】:2012-12-05 09:38:59
【问题描述】:

我尝试在 linux 中从 curl 调用 REST Web 服务,也使用 jersey
然后它返回

A message body reader for Java type, class mypackage.UserGroupsData, and MIME media type, application/json, was not found

Mappign 类是

public class UserGroupsData {
private int id;
private String name;    
public int getId() {
    return id;
} public void setId(int id) {
   this.id = id;
}public String getName() {
    return name;
}public void setName(String name) {
    this.name = name;
} public int getId() {
    return id;
}}

我的 POST 方法 ID

@POST
@Path("/getQualifiedNumbers")
@Produces("application/json")
@Consumes("application/json")
public Response getQualifiedNumbers(UserGroupsData userGroup){            
    return Response.status(201).entity(userGroup).build();        
}

我以前调用的Curl命令是

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"id":"1","name":"e"}' http://localhost:8080/url/getQualifiedNumbers

服务器是码头

谢谢

【问题讨论】:

    标签: java json rest curl


    【解决方案1】:

    尝试在您的课程中添加注释“@XmlRootElement”。它应该变成这样:

    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement
    public class UserGroupsData {
    private int id;
    private String name;    
    public int getId() {
        return id;
    } public void setId(int id) {
       this.id = id;
    }public String getName() {
        return name;
    }public void setName(String name) {
        this.name = name;
    } public int getId() {
        return id;
    }}
    

    【讨论】:

    • 不,它不工作,我使用 jersey 1.0,现在更新到 1.8 现在我有 java.lang.NoClassDefFoundError: com/sun/jersey/spi/service/ComponentProvider 问题,我有 com.sun。我的 pom 中的球衣 1.0,这可能是个问题吗?
    • Jersey 中的依赖项需要与您使用的版本兼容。您应该从 1.8 版下载所有 jar。所以你提到的可能是原因。我的回答解决了您发布的原始问题。
    • No AJ ,把@XmlRootElement 没有解决原来的问题,但我如何意识到低版本是问题所在。这就是我将版本更新到 1.8 的原因,现在问题是 com.sun.jersey 最新版本是 1.0,我认为这就是我在上面评论中提到的问题的原因
    • 不使用“@XmlRootElement”我认为球衣不会将类对象序列化为 JSON,无论您使用什么版本。
    • 检查jersey.java.net/nonav/documentation/latest/chapter_deps.html 并从那里获得球衣。如果您不想自己管理所有依赖项,请尝试“11.1. 核心服务器”部分中的“jersey-bundle.jar”和“asm.jar”。
    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-27
    • 2012-06-23
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多