甚至可以在JQuery中将JSON发布到在Jersey JAVA中获取JSON的服务器, 我正在努力解决这个问题。我有一个ajax发布JSON到服务器使用Jersey REST GET,但没有任何工作,我想知道它是否正确的方式来做到这一点。 以下是我之前关于问题的代码问题:
java中的代码在服务器中实现:
@Path("/helloworld")
public class GetData {
@GET
@Consumes("application/json")
@Produces("application/json")
public String getResource(JSONObject obj) throws IOException {
InputStream in = (InputStream) obj.values();
String data = IOUtils.toString(in);
JSONObject out = (JSONObject) JSONSerializer.toJSON(data);
String result = out.getString("name");
return data;
}
}
Javascript代码:
<script>
$.ajax({
url: '/helloworld',
type: 'POST',
contentType: 'application/json',
data: { json: JSON.stringify({
name:"Bob"
})},
dataType: 'json'
});
alert("json posted!");
</script>
服务器控制台中的消息:
2012-apr-12 10:49:51 com.sun.jersey.spi.container.ContainerRequest getEntity ALLVARLIG:Java类net.sf.json.JSONObject和Java类型类net.sf.json.JSONObject的消息正文阅读器,未找到MIME媒体类型application / octet-stream。 与MIME媒体类型兼容的已注册邮件正文阅读器是: application / octet-stream - &gt; com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
答案 0 :(得分:1)
正如ManseUK在评论中暗示的那样,您正在发送POST请求并期望GET处理程序接收它。将处理程序中的@GET
更改为@POST
,或者执行一些非常愚蠢的操作,例如将POST委托给GET;)
@POST
@Consumes("application/json")
@Produces("application/json")
public String getResourceByPost(JSONObject obj) throws IOException {
return getResource(obj);
}