CXFの最新バージョンやその他の依存関係を使用して、JSONを生成して消費する単体テストのWebサービスを試しています。メソッドの引数がStringの場合は動作しますが、引数がカスタムオブジェクトの場合は失敗します。以下は、サンプル・リソースである:JAX-RS(CXF)でJSONをオブジェクトにアンマーシャリングできない
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("testPost")
public Employee getPostTest(Employee data) {
return data;
}
次のテストケースの抜粋であり、上記のコードの
List<Object> providers = new ArrayList<Object>();
providers.add(new JacksonJaxbJsonProvider());
WebClient client = WebClient.create(ENDPOINT_ADDRESS, providers);
client.accept("application/json");
client.type("application/json");
client.path("users/testPost/");
Employee e = new Employee();
e.setName("Test");
Response r = client.post(e);
最後の行は、次の例外をスロー:
2016年12月5日2 :46:50 AM org.apache.cxf.jaxrs.utils.JAXRSUtils logMessageHandlerProblem 重大度:com.finity.model.Employee、ContentTypeのメッセージボディリーダーが見つかりませんでした:application/jsonorg.apache.cxf.jaxrs.impl.WebApplicationExceptionMapper toResponse 警告:javax.ws.rs.WebApplicationException:HTTP 415サポートされていないメディアタイプ at org.apache.cxf.jaxrs.utils .JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1315) at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:826) at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils .javaファイル:789)
はJSONParserが、ノー行くを使用して読み取りを試しました:
Employee e = new Employee();
e.setName("Test");
Response r = client.post(e);
MappingJsonFactory factory = new MappingJsonFactory();
JsonParser parser = factory.createJsonParser((InputStream)r.getEntity());
はい、それはすでに追加されているが、まだその例外が来ています。 providers.add(新しいJacksonJaxbJsonProvider());とproviders.add(新しいJacksonJsonProvider());両方のプロバイダを試しました。 –
Jaxbを使用していますか? 'Employee'のコードを投稿して、どのタグを使用しているのかを確認してください.jax-rsサーバを起動しているコード – pedrofb
従業員モデルは、名前フィールドのみを持ち、クラスに注釈がないPOJOクラスです。私はEmployeeクラスでJsonAutoDetectとJsonSerializeアノテーションを試しましたが、それは助けにはなりませんでした。 –