Jersey REST服务不消耗JSON

时间:2015-05-13 08:18:55

标签: rest jersey response jersey-client

我有一个REST服务和客户端。我试图调用此服务直接使用JSON并将其转换为我需要的对象。但它不起作用。我收到以下错误:Java类com.a.b.c.D和Java类型类com.a.b.c.D的消息正文阅读器,以及找不到MIME媒体类型application / json。

服务:

@Path("/getListPrice")
public class ListPriceService {

      @POST
      @Consumes(MediaType.APPLICATION_JSON)
      @Produces(MediaType.APPLICATION_JSON)
      @Type(PricingObject.class)
      public Response search(PricingObject pricingObject, @Context final HttpHeaders headers) {
              .........
              return Response.ok().entity(pricingObject).build();
      }
}

客户端:

WebResource webResource = client.resource(url);               
ClientResponse response = webResource.accept(MediaType.APPLICATION_JSON)
                          .type(MediaType.APPLICATION_JSON_TYPE)
                          .post(ClientResponse.class, pricingObjectRequest);

if (response.getStatus() != 200) {
   throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}

有人可以告诉我出了什么问题吗?

3 个答案:

答案 0 :(得分:0)

您需要配置Jersey以使用句柄Json - >对象映射。使用Jersey 1,您需要在依赖项中添加json提供程序,例如

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>1.17.1</version>
</dependency>

答案 1 :(得分:0)

  

Java类com.a.b.c.D和Java类型类com.a.b.c.D的消息正文阅读器,以及未找到MIME媒体类型application / json

如果您遇到服务器端异常或客户端异常,您没有说出来。如果是前者,你要​​么没有JSON的提供者,要么你有一个但没有配置它。

这是提供者

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>${jersey1-version}</version>
</dependency>

这是web.xml配置

<init-param>
    <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
    <param-value>true</param-value>
</init-param>

如果它是客户端异常,我会假设您具有上述依赖性。然后只需使用客户端配置它

ClientConfig config = new DefaultClientConfig();
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(config);

答案 2 :(得分:-1)

您可以修改资源类,如下所示

MATLAB

数据位于 /**<code> * { * "id"=1, * "name="priceitem1" * } * </code> **/ @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response search(PricingObject pricingObject) { JSONArray jsarray=new JSONArray(); jsarray.put(pricingObject); return Response.ok().entity(jsarray.toString()).build(); }

tags are the json data that will come from the client.


you can configure your bean class as below

之间

}

@xmlelement将json键与您的bean类变量绑定。