0

この4.3章を使用して、RESTサービスでpojoと通信しました。現時点では、pojoを投稿して取得できます。正常に動作します。しかし、応答のエンティティを取得しようとすると、次の例外が発生します。

 27.06.2012 10:44:44 com.sun.jersey.api.client.ClientResponse getEntity
 SCHWERWIEGEND: A message body reader for Java class javax.xml.bind.JAXBElement, and  Java type class javax.xml.bind.JAXBElement, and MIME media type application/xml was not found
 27.06.2012 10:44:44 com.sun.jersey.api.client.ClientResponse getEntity
 SCHWERWIEGEND: The registered message body readers compatible with the MIME media type are:
 application/xml ->

サーバー側では、次のようにエンティティをラップします。

  res = Response.created(UriBuilder.fromUri(uriInfo.getAbsolutePath() + "/" + object.getObjectId()).build()).entity(new JAXBElement<ObjectPOJO>(new QName("objectpojo"), ObjectPOJO.class, object)).build();

JAXBElementなしでpojoをラップするだけでそれも試しました。

クライアント側では、さまざまなアプローチを試しました。

 GenericType<JAXBElement<ObjectPOJO>> objectType = new GenericType<JAXBElement<ObjectPOJO>>() {};
 objectType = (GenericType<JAXBElement<ObjectPOJO>>) res.getEntity(JAXBElement.class).getValue();

 object = res.getEntity(ObjectPOJO.class);

等々。誰かが正しいアプローチを知っていますか?私が言ったように、getとpostの通信はうまく機能します。

4

1 に答える 1

2

そのはず:

ObjectPOJO object = res.getEntity(new GenericType<JAXBElement<ObjectPOJO>>() {}).getValue();
于 2012-06-28T09:21:54.660 に答える