1

是否可以将 JQuery 中的 JSON 发布到在 Jersey JAVA 中获取 JSON 的服务器,我正在努力解决这个问题。我有一个 ajax 使用 Jersey REST GET 将 JSON 发布到服务器,但没有任何效果,我想知道它是否是正确的方法。这是我之前关于该问题的代码的问题:

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 -> com.sun.jersey.core.impl.provider.entity.ByteArrayProvider

4

1 回答 1

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);
}                           
于 2012-04-12T09:03:56.290 回答