Nic*_*las 3 java json cxf jackson
我使用JAXRSClientFactory从我的RESTful Web服务的接口创建一个CXF客户端代理.
我的界面代表CRUD操作,因此我的create接受一个自定义Object并从中创建一个DB条目.当我将对象传递给create方法时,我会得到这个:
org.apache.cxf.jaxrs.client.ClientWebApplicationException: org.apache.cxf.interceptor.Fault: .No message body writer has been found for class : class com.example.Calss, ContentType : application/json.
Run Code Online (Sandbox Code Playgroud)
我通过向方法添加提供程序列表JacksonJsonProvider来解决此问题,该JAXRSClientFactory.create方法解析了对对象进行编组.
然后我尝试执行Read操作,该操作返回一个Response实体是自定义Object的对象.当我尝试阅读时,我收到此错误:
org.apache.cxf.jaxrs.client.ClientWebApplicationException: .Problem with reading the response message, class : class javax.ws.rs.core.Response, ContentType : application/json.
Run Code Online (Sandbox Code Playgroud)
我可以通过从my中删除提供程序来解决此问题JAXRSClientFactory.create,但这会导致Create操作失败.
我似乎无法解决此问题(使用相同的客户端对象时).有人遇到过这种情况么?我究竟做错了什么?
此问题源于使用Jackson作为JSON映射器.在我的界面定义中,我正在返回一个Response对象,Jackson/CXF不知道如何处理,所以杰克逊不会写它.
解决方案是这样的:
JacksonJsonProvider provider = new JacksonJsonProvider();
provider.addUntouchable(Response.class);
providerList.add(provider);
webService = JAXRSClientFactory.create(url, IWebService.class, providerList);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8546 次 |
| 最近记录: |