`

CXF收发json信息,并进行对象转换

    博客分类:
  • CXF
 
阅读更多

今天试验cxf的客户端收发信息测试,之前一直是让服务端直接返回string,然后客户端拿到字符串后进行解析。

这样的代码,网上任意都能找到。可是如果服务端返回的是json类型,客户端该如何解析呢?

网上的代码基本上都是在强调服务端,说应该配置<jaxrs:providers>,却都不提到客户端该如何配置,都是直接调用类似以下代码:

WebClient client = WebClient.create('some url');

client.type('....').accept('....');

Response r = client.get();

Object obj = r.readEntity(Entity.class);

 

如果按照以上代码进行调用,大部分情况下都会报出这么一个错误:

No message body writer has been found for class XXX.XXX.XXX

 

解决办法如下:

 

<<Server端>>

@Produces({MediaType.APPLICATION_JSON_VALUE})
    @Path("/{id}")
    @GET
    public Person getPeople(@PathParam("id") int id) {
        return peopleService.getPeople(id);
    }

 

<<Client端>>

//请留意下面红色字体部分,一定要添加这个对应的Provider,也就是与服务端对应

WebClient client = WebClient.create("http://localhost:8080/rest/api/people/4", Arrays.asList(new JacksonJsonProvider()));
        client.type(MediaType.APPLICATION_JSON_TYPE).accept(MediaType.APPLICATION_JSON_TYPE);
       
        Response r = client.get();
        Object obj = r.readEntity(Person.class);

 

在WebClient.create方法加上对应的Provider之后,就可以在readEntity时拿到对应的正确的对象了。

分享到:
评论

相关推荐

    CXF利用Json格式传输对象

    通过配置CXF客户端和服务端,可以方便地在JSON和Java对象之间进行转换。 3. Jackson集成 Jackson是Java中最常用的JSON库之一,CXF可以通过JAXB(Java Architecture for XML Binding)结合Jackson来实现JSON序列化...

    cxf传输json

    Gson是Google提供的一个Java库,能够将Java对象转换为JSON字符串,反之也能将JSON文本解析为等效的Java对象。在CXF服务中,Gson可以帮助我们将Java对象序列化为JSON,以便通过HTTP传输,或者反序列化接收到的JSON...

    Apache CXF + Spring3 + REST + JSON配置

    - 对于请求和响应对象,可以使用JavaBeans或者POJO(Plain Old Java Objects)模型,CXF会自动进行JSON与Java对象之间的转换。 4. **部署和测试**: - 将CXF的Servlet配置到Web应用的`web.xml`中,以便在服务器...

    Cxf转换器示例

    3. **数据绑定**:CXF支持JAXB(Java Architecture for XML Binding)和其他数据绑定技术,允许对象模型与XML文档之间进行自动转换。在示例中,源码可能展示了如何利用这些绑定技术。 4. **测试用例**:为了验证...

    cxf框架的webservice,传递json,xml

    CXF框架是Apache组织开发的一款开源服务开发框架,主要用于构建和开发Web服务。它支持SOAP、RESTful等多种服务风格,...在实际项目中,理解并熟练运用CXF处理XML和JSON的能力,能够显著提升Web服务的开发效率和质量。

    ApacheCxf提供Json格式接口服务demo

    这里,`User`是一个自定义的Java对象,CXF会自动处理JSON序列化和反序列化。 通过以上步骤,你就成功地使用Apache CXF创建了一个JSON格式的接口服务。这个例子只是一个基础的演示,实际上,CXF提供了许多高级特性...

    cxf spring json xml jar包

    cxf&spring;&json;&xml;所需要的jar包和实例

    接受json格式的CXF+Spring整合的REST的服务完整接口实例

    发布CXF+Spring整合的REST的服务接口完整实例,其中包括数据库连接池,json数据格式传递数据,HttpURLConne的get和post方式调用接口,以及获取访问者ip地址工具类等众多的技术实例。

    CXF结合Spring发布Json格式WebService示例

    本实例工程使用Apache CXF组件快速开发WebService。基于Spring框架,使用了Maven项目,但由于时间原因,只使用了Maven Project的框架,还是使用lib文件夹存放所需的cxf库,传入传出对象支持Json格式。

    CXF2.6 spring 提供rest服务输出xml或json等格式数据

    在实现类中,你需要创建一个Person对象并转换为XML或JSON格式。CXF会自动处理这些转换。 为了使CXF能够识别和处理这些服务,我们需要在Spring配置文件中声明它们,并启用扫描: ```xml ...

    cxf转换器

    例如,如果你需要将接收到的XML消息转化为自定义的Java对象,或者将Java对象转化为JSON格式发送,CXF的转换器机制就能派上用场。 【Web服务发布】在CXF中是通过Spring框架进行的。Spring是Java应用程序的一个流行...

    WebService CXF 对象传递 附

    本文将深入探讨如何在CXF中进行对象传递,并结合相关代码实例来帮助理解。 1. **CXF简介** CXF(Code first eXtended Framework)是一个Java Web服务框架,它提供了从Java类创建Web服务以及从WSDL创建Java服务端点...

    CXF整合spring同时支持JSON和XML配置的HelloWorld

    为了自动将接收到的JSON或XML数据转换为Java实体类,我们需要确保实体类具有对应的getter和setter方法,并且CXF可以通过JavaBeans规范进行反序列化。例如,如果我们有一个`Request`类,CXF会自动尝试将XML或JSON数据...

    webservice cxf spring整合返回list,bean,string,json,xml项目完整实例

    通过Apache CXF框架创建Web服务,并结合Spring框架进行管理,从而能够灵活地返回不同类型的数据,包括List、自定义Bean对象、纯文本String以及常见的数据交换格式JSON和XML。这种集成方式使得服务端能够更加便捷地...

    Struts2 Hibernate Spring CXF JSON FreeMarker

    附件是我平时对一些技术的Demo,包含 Struts2 Hibernate Spring集成,涉及到CXF JSON FreeMarker等技术,SSH2使用的Struts2的零配置。有兴趣的可以下载研究学习。

    07.处理Map等CXF无法自动转换的复合数据类型的形参和返回值

    本文将详细探讨如何处理Map等CXF无法自动转换的复合数据类型的形参和返回值,这对于提升服务功能和用户体验至关重要。 首先,我们需要理解CXF的工作原理。CXF提供了一种直观的方式来创建和消费Web服务,它通过Java...

    json解析所需要的所有jar包,webservice cxf所有的jar

    为了能够进行JSON解析和使用CXF开发Web服务,你需要包含以下几类jar包: 1. JSON解析库:如org.json或com.google.gson等,这些库提供了方便的API,用于将JSON字符串转换为Java对象,反之亦然。例如,org.json中的...

    cxf集成Spring的restful WebService接口以Json形式表现

    总的来说,这个项目提供了一个基础的模板,帮助初学者理解如何使用CXF和Spring构建RESTful WebService,并以JSON格式返回结果。通过实践这个项目,你可以深入学习RESTful API的设计原则、CXF和Spring的集成方式,...

    CXF 通过用户名和密码进行验证

    - **WSDL-first方式**:在WSDL文件中定义安全策略,CXF会自动读取并应用这些策略。 **四、安全最佳实践** 1. **密码加密**:为了提高安全性,密码通常不以明文形式在网络中传输,而是使用某种加密或哈希算法处理。...

Global site tag (gtag.js) - Google Analytics