我的网络服务有问题。
GET
请求执行得很好且正确,但是post请求正在获取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:
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();
}
答案 0 :(得分: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: