在RestFul Webservice中传递JSONObject

时间:2013-01-03 12:45:50

标签: java json rest

我正在使用RestFul WebserviceJBoss Server部署应用以接收JSONObjectweb service,以测试我已创建web service和为它编写测试用例。现在我把JSONobject从测试用例传递到Web服务,当我将json对象传递给@post service时,它会响应Null Pointer Exception,即使我尝试过将字符串传递给它它会响应null个值。 我在Annotations

中使用了webservice,如下所示
@consumes({Mediatype.APPLICATION_JSON})

@Consumes("application/json")

测试用例As:

    @Test
   public void testgetmsg() {
    String msg = "{\"patient\":[{\"id\":\"6\",\"title\":\"Test\"}]}";
    try {
        JSONObject obj = new JSONObject(new JSONTokener(msg));
            WebResource resource = client.resource( "https://localhost:8443/../../resources/create");
        ClientResponse response = resource.type(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON).
                        entity(obj).post(ClientResponse.class,JSONObject.class);
                 }
    }

任何人都能引导我继续前进吗?

先谢谢

2 个答案:

答案 0 :(得分:0)

您不需要创建json对象,只需传递字符串即可。

你应该

 ClientResponse response = resource.type(MediaType.APPLICATION_JSON)
                                   .accept(MediaType.APPLICATION_JSON)
                                   .post(ClientResponse.class, msg);

答案 1 :(得分:0)

//CLIENT

public static void createStudent() {
    String input = "{\"id\":12,\"firstName\":\"Fade To Black\",\"lastName\":\"Joy\"}";
    ClientResponse response = service.path("class/post")
            .type("application/json").post(ClientResponse.class, input);
    System.out.println("Output from Server .... \n");
    String output = response.getEntity(String.class);
    System.out.println(output);
    System.out.println(response.getStatus()+ "OK");
}

而不是使用代码客户端,您可以使用添加on firefox(POSTER)将值传递为json或formparam ......

  // create new student SERVER
   //class

   @POST
   @Path("post")
   @Consumes(MediaType.APPLICATION_JSON)
   @Produces(MediaType.APPLICATION_JSON)
   public Response createStudent(Student st) {
       // add new student 
       StudentDAO.instance.getModelStudent().put("8", st);
       // response status code
       return Response.status(200).entity(st).build();
    }