是否可以在JQuery中将JSON发布到在Jersey JAVA中获取JSON的服务器

时间:2012-04-12 08:37:25

标签: java jquery ajax json jersey

甚至可以在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

1 个答案:

答案 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);
}