我有一个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());
}
有人可以告诉我出了什么问题吗?
答案 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类变量绑定。