4

我的网络服务有问题。 GET请求执行良好且正确,但发布请求正在获取 HTTP 状态 415。

我正在处理的项目是一个需要与 Android 移动应用程序通信的 JAX-RS RESTful API。我可以从GET声明中获得信息。

这是我的LoginFormat对象的代码:

@XmlRootElement
public class LoginFormat {

    private String username;
    private String password;

    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;
    }
}

在这里你可以看到我班级的POST样本:CoCreationService

@Path("/User")
public class CoCreationService {
    @POST
    @Path("/testLogin") 
    @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    public Response parseTerm(LoginFormat login) {  

        return Response.status(200).entity(login.getUsername() + login.getPassword()).build();  
    }
}

我尝试了很多,以至于我对此感到困惑。

我正在用 curl 测试 Web 服务:

curl -i -X POST -H 'Content-Type: application/json' -d '{"username": "testuser", "password": "test"}' http://localhost:8080/CoCreationService/api/User/testLogin

是否有一些设置需要说明或者我犯了一个严重的错误?

PS:我正在使用 NetBeans。

编辑:带有文本/纯文本的 POST 作品!

@POST
@Path("/testPost")
@Consumes("text/plain")
public Response postClichedMessage(String message) {       
    return Response.status(200).entity(message).build();
}
4

1 回答 1

0

代码没有问题。您唯一需要做的就是在您的类路径中包含适当的库,该库知道如何解组 json 字符串。如果使用 Maven,您可以简单地添加另一个依赖项:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>${jersey.version}</version>
</dependency>

只要您使用的是 Netbeans,您就可以在 AS 日志中看到如下内容:

SEVERE: A message body reader for Java class LoginFormat, and 
Java type class LoginFormat, and MIME media type application/json 
was not found.

The registered message body readers compatible with the MIME media type are:
于 2014-03-17T21:35:41.663 回答