2013-08-28 63 views
0

我正在休息Web服務,並且正在通過FF中的Rest Client執行它。截至目前,它被用來作爲後法現在我已經改變它的輸入類型到JSON即現在我發送JSON輸入到WS但其餘客戶端上我得到將休息Web服務的輸入類型設置爲Json

Status Code: 415 Unsupported Media Type 
Connection: Keep-Alive 
Content-Length: 0 
Content-Type: text/plain 
Date: Wed, 28 Aug 2013 07:52:50 GMT 
Keep-Alive: timeout=5, max=99 
Server: Apache/2.2.19 (Win32) mod_jk/1.2.30 PHP/5.3.6 

下面是WS新的簽名(我已經添加了消費和生產線)

@Override 
    @POST 
    @Path("/addHouseHoldAccounts") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public Response addHouseHoldAccounts(JSONObject jsonObject) { 
.... 
.... 
} 

其餘客戶端上我已經設置頁眉Content-Type application/json

以下是JSON輸入我試圖發送

{ 
    "jsonObject":{ 
     "JsonId":"17fb00b6-dfa3-4cc6-b7ba-c54ecd429350", 
    "JsonTypeOf":"JSonTest", 
    "JsonType":"", 
    "JsonTypetName":"JsonImplemented" 
    } 
} 

任何人都可以指出我的錯誤或爲我提出解決方案來實現這一點。

回答

0

我覺得這個代碼可以幫助您:

的WebService:

 @POST 
     @Path("/your_path") 

     @Consumes(MediaType.APPLICATION_JSON) 
     @Produces(MediaType.APPLICATION_JSON) 

     //Receive and send a json object 
     public JSONObject receiveJSONObject(JSONObject json) throws JSONException 
     { 
       return json; 
     } 

客戶

private void sendJSONObject() throws JSONException{ 

     ClientConfig config = new DefaultClientConfig(); 
     Client client = Client.create(config); 
     client.addFilter(new LoggingFilter()); 
     WebResource service = client.resource("*your_adress_and_path*"); 
     JSONObject data= new JSONObject(); 
     dados.put("Name", "John"); 
     dados.put("Age", "30"); 
     dados.put("City", "Tokyo"); 

     ClientResponse client_response = service.accept(MediaType.APPLICATION_JSON).post(ClientResponse.class, data); 

     System.out.println("Status: "+client_response.getStatus()); 

     client.destroy(); 

    } 

我不確定,但我認爲你沒有將內容類型設置爲json。此代碼爲我工作。