用CXF可以开发RESTful服务,服务接口的输入和输出支持xml和json两种格式。
工具类源码:
/** * 以get方式访问 * * @param url 接口url地址 * @return */ public static String get(String url) { HttpClient httpClient = new DefaultHttpClient(); try { HttpGet httpGet = new HttpGet(url); httpGet.addHeader("accept", "application/xml"); HttpResponse httpResponse = httpClient.execute(httpGet); int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { HttpEntity httpEntity = httpResponse.getEntity(); String result = EntityUtils.toString(httpEntity); EntityUtils.consume(httpEntity); return result; } } catch (Exception ex) { ex.printStackTrace(); } finally { try { httpClient.getConnectionManager().shutdown(); } catch (Exception ex) { ex.printStackTrace(); } } return ""; } /** * 以post方式访问 * * @param url 接口url地址 * @param xmlBody xml格式的字符串 * @return */ public static String post(String url, String xmlBody) { HttpClient httpClient = new DefaultHttpClient(); try { HttpPost httpPost = new HttpPost(url); StringEntity input = new StringEntity(xmlBody, "UTF-8"); input.setContentType("application/xml"); httpPost.setEntity(input); HttpResponse httpResponse = httpClient.execute(httpPost); int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode == HttpStatus.SC_OK) { HttpEntity httpEntity = httpResponse.getEntity(); String result = EntityUtils.toString(httpEntity); EntityUtils.consume(httpEntity); return result; } } catch (Exception ex) { ex.printStackTrace(); } finally { try { httpClient.getConnectionManager().shutdown(); } catch (Exception ex) { ex.printStackTrace(); } } return ""; } /** * jaxb对象转成xml格式的字符串 * * @param jaxbElement jaxb对象,类必须加注解类 @XmlRootElement * @return */ public static String convertToXML(Object jaxbElement){ String result = null; try{ JAXBContext context = JAXBContext.newInstance(jaxbElement.getClass()); Marshaller marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); StringWriter writer = new StringWriter(); marshaller.marshal(jaxbElement, writer); result = writer.toString(); }catch(Exception ex){ ex.printStackTrace(); } return result; } /** * 格式化xml字符串 * * @param xmlStr xml字符串 * @return * @throws Exception */ public static String formatXML(String xmlStr) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new StringReader(xmlStr)); String resultXml = null; XMLWriter writer = null; if(document != null){ try { StringWriter stringWriter = new StringWriter(); OutputFormat format = new OutputFormat(" ", true, "UTF-8"); writer = new XMLWriter(stringWriter, format); writer.write(document); writer.flush(); resultXml = stringWriter.getBuffer().toString(); }finally{ if(writer != null){ try{ writer.close(); writer = null; }catch(IOException ex){ ex.printStackTrace(); } } } } return resultXml; }
接口调用范例:
url = "http://localhost:8080/server/rest/Param/findOne/1/M"; String result = get(url); System.out.println(formatXML(result)); url = "http://localhost:8080/server/rest/doingLog/save"; DoingLog doingLog = new DoingLog(); doingLog.setCountry("中国"); doingLog.setProvince("广东"); doingLog.setCity("广州"); doingLog.setDeviceType("M"); doingLog.setRemoteAddress("127.0.0.1"); doingLog.setCreateTime(new Date()); result = post(url, convertToXML(doingLog)); System.out.println(result);
相关推荐
CXF,全称Apache CXF,是一个开源的Java框架,它提供了丰富的功能来帮助开发者创建和消费Web服务,包括RESTful服务。本资料主要讲解如何使用Spring与CXF集成,来发布RESTful服务,并提供了相关的项目案例和代码。 ...
例如,CXF-Tools可以将Java接口自动生成对应的RESTful服务代码。 **7. 性能与扩展性** 了解如何通过CXF配置优化REST服务的性能,比如缓存策略、线程池设置等。同时,学习如何集成其他技术,如Spring Boot,以提升...
5. **暴露服务**:通过Spring Boot的`@RestController`注解暴露RESTful接口。 在客户端,你可以使用HTTP库(如Apache HttpClient或Java的HttpURLConnection)发送POST请求,携带JSON或XML格式的复杂数据到Web服务的...
对于RESTful服务,CXF提供了`ApacheHttpClient4Executor`和`AsyncApacheHttpClient4Executor`,它们基于Apache HttpClient库。你可以通过`ClientBuilder`构建客户端,并设置HTTP请求的属性,如URL、HTTP方法、请求...
1. **cxf-api.jar**: 包含CXF的主要API接口和抽象类,这些接口定义了如何与CXF框架交互。 2. **cxf-rt-frontend-jaxws.jar**: 提供了JAX-WS(Java API for XML Web Services)的支持,用于创建和处理基于SOAP的Web...
CXF不仅仅是SOAP(简单对象访问协议)和RESTful(Representational State Transfer)服务的实现,还提供了丰富的功能,如WS-*(Web服务扩展)规范支持、客户端和服务端的代码生成工具、多种传输协议支持以及与Spring...
2. **JAX-WS和JAX-RS实现**:CXF实现了Java API for XML Web Services (JAX-WS)和Java API for RESTful Web Services (JAX-RS),分别用于构建SOAP和RESTful接口。开发者可以使用这些API轻松地创建服务端点和服务...
7. **文档生成**:CXF可以从服务接口生成WSDL(Web Services Description Language)文档,也可以从WSDL生成服务接口代码,极大地简化了开发流程。 8. **测试工具**:CXF提供了一些测试工具,如CXF TestSuite,可以...
CXF允许开发者通过多种协议如SOAP、RESTful来实现Web服务,并且提供了丰富的API和工具支持,使得开发过程更加简便。本篇文章将深入探讨如何使用CXF进行Web服务的开发与部署。 ### 1. CXF概述 Apache CXF最初由XFire...
例如,`cxf-api.jar`包含了CXF的主要API接口,`cxf-rt-core.jar`包含了CXF运行时的核心实现,`cxf-rt-bindings-soap.jar`则包含了SOAP绑定相关的类。 在CXF 2.6.6版本中,开发者可能需要以下几类jar包: 1. **核心...
- `cxf-rt-transports-http.jar` 和 `cxf-rt-transports-http-hc.jar`:分别提供基于Java内置HTTP支持和HttpClient的HTTP传输能力。 - `cxf-rt-bindings-soap.jar`:处理SOAP绑定。 - `cxf-rt-wsdl.jar`:解析和处理...
CXF允许开发者用Java编程语言来实现Web服务,并提供了丰富的API和工具,简化了服务接口的定义、服务的部署和调用。 在"压缩包子文件的文件名称列表"中,"apache-cxf-3.0.10"可能包含以下组件: 1. `cxf-api` - 包含...
10. **cxf-rt-transports-http**: 提供HTTP/HTTPS传输机制,使得CXF服务可以通过HTTP协议进行访问。 11. **cxf-rt-transports-http-hc**: 基于Apache HttpClient的HTTP/HTTPS传输,提供了更高级的HTTP功能。 12. *...
- 通常,开发者会定义一个Java接口,其中的方法对应RESTful操作,然后使用CXF生成对应的端点(Endpoint)和服务文档。 - 在客户端,可以使用Java的HTTP客户端库(如Apache HttpClient)或者CXF的JAX-RS客户端API来...
- 可能还包括其他依赖,如jaxb、wsdl4j、httpclient等,这些都是CXF和Spring工作所需的基础库。 5. 使用步骤: - 创建Spring配置文件,定义CXF服务的bean。 - 导入必要的jar包到项目类路径中。 - 在Spring配置...
- `cxf-api`:包含CXF的核心API和接口。 - `cxf-rt-frontend-jaxws`:JAX-WS前端实现,用于创建和消费SOAP服务。 - `cxf-rt-frontend-jaxrs`:JAX-RS前端实现,用于创建和消费RESTful服务。 - `cxf-rt-transports-...
CXF是一个强大的Web服务框架,它支持SOAP、RESTful等多种通信协议,同时也支持WS-*规范,如WS-Security、WS-Addressing等。CXF提供了多种开发Web服务的方式,包括JAX-WS(Java API for XML Web Services)和JAX-RS...
2. **丰富的支持**:CXF支持多种Web服务标准,包括SOAP、RESTful、MTOM、SwA等,以及各种WS-*规范。 3. **集成性**:与Spring框架紧密集成,易于部署和管理服务。 4. **性能**:CXF使用高效的代码生成和优化技术,...
CXF允许开发者通过多种方式创建和消费Web服务,包括基于Java API for RESTful Web Services (JAX-RS) 和 Java API for XML Web Services (JAX-WS) 的接口。在提供的"CXF3.1.11客户端最精简jar包"中,包含了执行CXF...
总的来说,调用.NET接口在Java中可以通过标准Web服务方式或RESTful接口实现,选择哪种方法取决于.NET接口的具体设计和项目需求。熟悉这些技术对于提高跨平台开发的效率至关重要。记得在实际应用中,一定要确保兼容性...