很讨厌webservice框架配置的繁琐
尤其是axis系列
一怒之下直接用servlet开发了
其实也很简单,关键是要获取到请求soap和响应soap,可借助soapUI来生成
soapUI的使用这里不做介绍
生成请求soap和响应soap后关键就是解析soap了
直接用的java提供的API来解析
解析请求Soap
代码如下:
public class SyncNotifySPReqDecoder {
private static Logger logger = LoggerFactory.getLogger(SyncNotifySPReqDecoder.class);
public static SyncNotifySPReq decode(InputStream in){
DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();
String recordSequenceId = "0";
List<YingZhangReceiptBody> itemList = new ArrayList<YingZhangReceiptBody>();
try {
DocumentBuilder dombuilder=domfac.newDocumentBuilder();
Document doc=dombuilder.parse(in);
Element root=doc.getDocumentElement();
//解析recordSequenceId
NodeList recordSequenceIdNodeList = root.getElementsByTagName("recordSequenceId");
if(recordSequenceIdNodeList.getLength() >= 1){
recordSequenceId = recordSequenceIdNodeList.item(0).getTextContent();
}
//解析item
NodeList itemNodeList = root.getElementsByTagName("item");
for (int i = 0; i < itemNodeList.getLength(); i++) {
Node item = itemNodeList.item(i);
String userIdType = getNodeValue(item, "userIdType");
String userId = getNodeValue(item, "userId");
String sp_productId = getNodeValue(item, "sp_productId");
String updateType = getNodeValue(item, "updateType");
//UserIdType填1 为手机号码 ; UserIdType填2 为伪码
if( "1".equals(userIdType) ){
YingZhangReceiptBody body = new YingZhangReceiptBody(remove86(userId), sp_productId, escapeServiceCode(updateType));
itemList.add(body);
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return new SyncNotifySPReq(recordSequenceId, itemList);
}
//获取Node Value
public static String getNodeValue(Node item, String nodeName){
for(Node n=item.getFirstChild(); n != null; n=n.getNextSibling()){
if(n.getNodeType() == Node.ELEMENT_NODE){
if(n.getNodeName().equals(nodeName)){
return n.getTextContent();
}
}
}
return null;
}
}
写响应SOAP
public class SyncNotifySPResEncoder {
/**
* 返回soap响应
* @param recordSequenceId
* @param resultCode 0: 成功; 1. 失败
*/
public static String encode(String recordSequenceId, int resultCode){
StringBuilder ret = new StringBuilder("<soapenv:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soap=\"http://soap.bossagent.vac.unicom.com\">");
ret.append("<soapenv:Header/>")
.append("<soapenv:Body>")
.append("<soap:orderRelationUpdateNotifyResponse soapenv:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">")
.append("<orderRelationUpdateNotifyReturn xsi:type=\"rsp:OrderRelationUpdateNotifyResponse\" xmlns:rsp=\"http://rsp.sync.soap.bossagent.vac.unicom.com\">")
.append("<recordSequenceId xsi:type=\"soapenc:string\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\">")
.append(recordSequenceId)
.append("</recordSequenceId>")
.append("<resultCode xsi:type=\"xsd:int\">")
.append(resultCode)
.append("</resultCode>")
.append("</orderRelationUpdateNotifyReturn>")
.append("</soap:orderRelationUpdateNotifyResponse>")
.append("</soapenv:Body>")
.append("</soapenv:Envelope>");
return ret.toString();
}
}
就是这么简单
分享到:
相关推荐
在实际开发中,有许多工具和框架可以帮助我们创建和使用XML Web Service,如Java的JAX-WS、.NET的ASP.NET Web Service、PHP的SOAP扩展等。这些工具通常简化了WSDL生成、SOAP消息处理等复杂任务。 六、安全考虑 XML ...
**Web Service XFire框架开发指南** Web Service是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行交互。XFire是Java平台上的一个开源Web Service框架,它提供了一种简单...
【如何使用Eclipse开发Web Service】 在开发Web Service时,Eclipse作为一个强大的集成开发环境(IDE),提供了便捷的工具和插件支持。本篇将详细阐述如何在Eclipse中进行Web Service的开发。 1. **准备工作** ...
本篇将深入探讨C#环境下开发Web Service的相关知识点。 首先,理解Web Service的基础概念至关重要。Web Service是一种基于互联网的、使用开放标准(如SOAP、WSDL和UDDI)进行通信的应用程序,它允许不同系统间的...
在本指南中,我们将深入探讨如何使用AXIS和xfire、cxf这两个流行的Java库来开发Web Service。 **AXIS工具包** AXIS是Apache软件基金会的一个项目,主要用于简化Web Service的开发、部署和调用。AXIS提供了一个强大...
【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...
本篇文章将深入探讨如何使用XFire来开发Web Service接口,并提供一个初学者友好的教程。 一、XFire简介 XFire(后被集成到Apache CXF项目)是一款轻量级的Java Web服务框架,它提供了快速、简单的方式来创建符合WS-...
在"Web Service学习-CXF开发Web Service实例demo(一)"中,我们将专注于SOAP Web Service的实现。以下是一些关键步骤: 1. **创建服务接口**:首先,你需要定义一个Java接口,这个接口会成为你的Web Service接口。...
MyEclipse下开发Web Service(Axis)2 一、环境准备 在使用 Axis 开发 Web Service 时,需要准备 web 服务器和 Axis API。本文使用的 Web container 是 Tomcat5.5,Axis API 采用版本 2。为便于开发,需要 downloads...
其API简洁易用,使得开发Web服务更为高效。 ### 4. CXF框架 Apache CXF是目前最广泛使用的Java Web服务框架,结合了Axis和XFire的优点。CXF提供全面的工具和API,支持SOAP、REST、WS-*规范(如WS-Security、WS-...
在“用于IDEAL开发Web Service的springframe框架的jar包”中,"spring-framework-master"可能是指Spring框架的源码仓库。如果你正在使用IDEAL进行开发,这个压缩包可以让你深入了解Spring的工作原理,并可能包含了...
- 开发Web Service通常涉及接口定义和服务实现。例如,创建一个名为`HelloService`的接口,其中包含一个`sayHello`方法,该方法接收一个字符串参数`name`并返回一个问候的字符串。 - 然后,创建一个实现类`...
Axis提供了一个简单的框架来开发和部署Web Service。 - **配置服务器端**:配置Axis服务器,使其能够处理Web Service请求。这通常涉及设置必要的环境变量和配置文件。 - **配置客户端**:配置客户端以调用服务器端...
Web Service编程--用C#.NET开发网络服务(1...Web Service基础 第六章 ASP.NET和ADO.NET 第七章 XML Web Service 第八章 SOAP、WSDL和UDDI 第九章 开发基于.NET平台的Web服务 附录A .NET框架类库 <br>
【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...
SSH框架是Java Web开发中广泛使用的一套技术栈,由Spring、Struts和Hibernate三个开源框架组合而成。这个框架组合提供了完整的MVC(Model-View-Controller)设计模式支持,帮助开发者构建高效、灵活且可扩展的Web...
【描述】:本文将详细介绍如何在Eclipse环境中利用Axis2框架开发一个Web Service服务端,包括计算器服务CalculateService的实现步骤。 【标签】:Axis2, Eclipse, 整合开发, Web Service 【内容】: 开发Web ...