0

我有一个休息网络服务,我正在通过 FF 中的休息客户端执行它。直到现在它被用作发布方法现在我必须将它的输入类型更改为 JSON 即现在我正在向该 ws 发送 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"
   }
}

谁能指出我的错误或建议我实现这一目标的解决方案。

4

2 回答 2

0

我认为这段代码可以帮助你:

网络服务:

        @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。这段代码对我有用。

于 2013-09-03T19:09:04.773 回答
0

尝试将请求标头设置"Accept""application/json"

http://www.w3.org/Protocols/HTTP/HTRQ_Headers.html#z3

于 2013-08-28T08:29:17.523 回答