2012-04-12 36 views
1

是否有可能将JSON中的JSON发布到在Jersey中获得JSON的服务器JAVA, 我正在努力问题。我有一个Ajax张贴JSON到服务器使用泽西REST GET,但没有任何工作,我想知道如果它正确的方式来做到这一点。 这里是我以前就这个问题提问与代码:Java中是否有可能在JQuery中发布JSON到获取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类class net.sf.json.JSONObject和MIME媒体类型application/octet-stream的消息正文阅读器。 注册消息正文的读者与MIME媒体类型兼容是: 应用/八位字节流 - > com.sun.jersey.core.impl.provider.entity.ByteArrayProvider

+0

包含的代码,并导致此不工作的任何错误消息 - 链接到其他问题,犯规的帮助 - 我们需要查看导致问题的代码... – ManseUK 2012-04-12 08:39:20

+0

我看到了,现在更新了问题! – nihulus 2012-04-12 08:44:58

+0

所以澄清 - 问题是JavaScript使用'POST'而你的Java读取'GET'? – ManseUK 2012-04-12 08:47:59

回答

1

如ManseUK暗示在注释,你正在发送一个POST请求并期待一个GET处理程序来接收它。无论是在处理程序改变@GET@POST,或做一些非常愚蠢的像代表POST搞定;)

@POST 
@Consumes("application/json") 
@Produces("application/json") 
public String getResourceByPost(JSONObject obj) throws IOException { 
    return getResource(obj); 
}       
+0

getResource()调用getResource()时,这将是一个永恒的递归? 我想知道变量obj是否包含已发布的json数据? – nihulus 2012-04-12 11:00:47

+1

没有递归,@POST注释的方法被称为'getResourceByPost'。真的,只需将@GET注释更改为@POST即可 – ptomli 2012-04-13 07:36:44

相关问题