我可以将JSON作为字符串发布到我的服务,但是当我将POST内容更改为JSONObject
类型时遇到问题:
服务器端的代码:
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response setJson(JSONObject p){
JSONObject obj = p;
String x = obj.toString();;
System.out.println(x);
run(x);
return Response.status(201).entity(x).build();
}
curl命令:
curl -X POST -H "Content-Type: application/json" -d '{"follow_request_sent": false,"default_profile": false, "following": false}' http://localhost:8080/HelloWorld/webresources/helloworld/post
错误:
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method (Unsupported Media Type)
P.s:这种接受JSONObject的模式适用于GET,但会产生POST
的问题答案 0 :(得分:0)
我建议使用带有JAXB注释的自定义类:
@XmlRootElement
public class Thing {
private boolean follow_request_sent;
private boolean default_profile;
private boolean following;
// Constructors, Getters, Setters, toString()
}
然后你可以这样编写你的方法:
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response setJson(Thing t) {
System.out.println(t);
return Response.status(201).entity(t).build();
}
注意强>
/post
之类的路径。使用像/things
这样的集合资源。 POST
此收集资源将创建一个新的Thing
。location(URI)
添加到Response
的建筑物中。此URI
应为新创建的Thing
:/things/23
的URI。