今天试验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和Java对象之间进行转换。 3. Jackson集成 Jackson是Java中最常用的JSON库之一,CXF可以通过JAXB(Java Architecture for XML Binding)结合Jackson来实现JSON序列化...
Gson是Google提供的一个Java库,能够将Java对象转换为JSON字符串,反之也能将JSON文本解析为等效的Java对象。在CXF服务中,Gson可以帮助我们将Java对象序列化为JSON,以便通过HTTP传输,或者反序列化接收到的JSON...
- 对于请求和响应对象,可以使用JavaBeans或者POJO(Plain Old Java Objects)模型,CXF会自动进行JSON与Java对象之间的转换。 4. **部署和测试**: - 将CXF的Servlet配置到Web应用的`web.xml`中,以便在服务器...
3. **数据绑定**:CXF支持JAXB(Java Architecture for XML Binding)和其他数据绑定技术,允许对象模型与XML文档之间进行自动转换。在示例中,源码可能展示了如何利用这些绑定技术。 4. **测试用例**:为了验证...
CXF框架是Apache组织开发的一款开源服务开发框架,主要用于构建和开发Web服务。它支持SOAP、RESTful等多种服务风格,...在实际项目中,理解并熟练运用CXF处理XML和JSON的能力,能够显著提升Web服务的开发效率和质量。
这里,`User`是一个自定义的Java对象,CXF会自动处理JSON序列化和反序列化。 通过以上步骤,你就成功地使用Apache CXF创建了一个JSON格式的接口服务。这个例子只是一个基础的演示,实际上,CXF提供了许多高级特性...
cxf&spring;&json;&xml;所需要的jar包和实例
发布CXF+Spring整合的REST的服务接口完整实例,其中包括数据库连接池,json数据格式传递数据,HttpURLConne的get和post方式调用接口,以及获取访问者ip地址工具类等众多的技术实例。
本实例工程使用Apache CXF组件快速开发WebService。基于Spring框架,使用了Maven项目,但由于时间原因,只使用了Maven Project的框架,还是使用lib文件夹存放所需的cxf库,传入传出对象支持Json格式。
在实现类中,你需要创建一个Person对象并转换为XML或JSON格式。CXF会自动处理这些转换。 为了使CXF能够识别和处理这些服务,我们需要在Spring配置文件中声明它们,并启用扫描: ```xml ...
例如,如果你需要将接收到的XML消息转化为自定义的Java对象,或者将Java对象转化为JSON格式发送,CXF的转换器机制就能派上用场。 【Web服务发布】在CXF中是通过Spring框架进行的。Spring是Java应用程序的一个流行...
本文将深入探讨如何在CXF中进行对象传递,并结合相关代码实例来帮助理解。 1. **CXF简介** CXF(Code first eXtended Framework)是一个Java Web服务框架,它提供了从Java类创建Web服务以及从WSDL创建Java服务端点...
为了自动将接收到的JSON或XML数据转换为Java实体类,我们需要确保实体类具有对应的getter和setter方法,并且CXF可以通过JavaBeans规范进行反序列化。例如,如果我们有一个`Request`类,CXF会自动尝试将XML或JSON数据...
通过Apache CXF框架创建Web服务,并结合Spring框架进行管理,从而能够灵活地返回不同类型的数据,包括List、自定义Bean对象、纯文本String以及常见的数据交换格式JSON和XML。这种集成方式使得服务端能够更加便捷地...
附件是我平时对一些技术的Demo,包含 Struts2 Hibernate Spring集成,涉及到CXF JSON FreeMarker等技术,SSH2使用的Struts2的零配置。有兴趣的可以下载研究学习。
本文将详细探讨如何处理Map等CXF无法自动转换的复合数据类型的形参和返回值,这对于提升服务功能和用户体验至关重要。 首先,我们需要理解CXF的工作原理。CXF提供了一种直观的方式来创建和消费Web服务,它通过Java...
为了能够进行JSON解析和使用CXF开发Web服务,你需要包含以下几类jar包: 1. JSON解析库:如org.json或com.google.gson等,这些库提供了方便的API,用于将JSON字符串转换为Java对象,反之亦然。例如,org.json中的...
总的来说,这个项目提供了一个基础的模板,帮助初学者理解如何使用CXF和Spring构建RESTful WebService,并以JSON格式返回结果。通过实践这个项目,你可以深入学习RESTful API的设计原则、CXF和Spring的集成方式,...
- **WSDL-first方式**:在WSDL文件中定义安全策略,CXF会自动读取并应用这些策略。 **四、安全最佳实践** 1. **密码加密**:为了提高安全性,密码通常不以明文形式在网络中传输,而是使用某种加密或哈希算法处理。...