2012-04-12 37 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

相關問題