很讨厌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();
}
}
就是这么简单
分享到:
相关推荐
Web Service XFire框架开发指南,pdf格式
cxf的帮助文档 . 开发web service的一个很简单的框架,很容易上手的
Web Service编程--用C#.NET开发网络服务(1...Web Service基础 第六章 ASP.NET和ADO.NET 第七章 XML Web Service 第八章 SOAP、WSDL和UDDI 第九章 开发基于.NET平台的Web服务 附录A .NET框架类库 <br>
Jersey Java规范下REST风格Web Service开发框架
使用Axis开发Web Service程序 在文档中进行了最简单的说明和举例 对于简单框架搭建进行了代码举例
XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。 相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在...
好像没有多少人讨论, 大多数的话题都是围绕xfire, cxf, axis/axis2等主流的Web Service框架.尽管是从事这方面的工作, 不过实际开发中还是公司内部开发的一个Web Service模块, 发现与Spring提供的这个模块的构架很像...
包含了ideal开发webservices的所有的framework的框架以及其他的jar包
Ⅰ)开发web service业务接口,该接口用@WebService修饰; Ⅱ)开发web service业务接口的实现类,也要用@WebService修饰; Ⅲ)使用EndPoint类的静态方法publish()来发布web service。 2、客户端 Ⅰ)调用CXF...
网络上很多基于ksoap2开发包的WEB SERVICE调用,虽然ksoap2不大,但是内部细节不是很清楚。本代码可以基于http协议,拼凑SOAP协议,完成.net以及java开发的web service调用。供大家分享!内部也有一例是基于ksoap2...
實例介紹 ASP .NET ASP .NET 架構 ASP .NET Page 架構 ASP .NET Server Control ASP .NET Data Access ASP .NET Configuration ASP .NET Localization ...ASP .NET Cache Service ...Web Service ......
它不同于传统的SOAP Web Service和Rest Web Service这些Web Service 技术型框架,Rop是一个应用型的Web Service平台框架,它不但可以方便快捷地开发一个个Web Service服务,还提供了服务平台领域问题的整体解决方案...
java开发框架研究 系统讲述java开发原理 和web service
《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on Rails是一个全套的MVC web框架,它能帮你开发高质量又美观的web应用,而且开发速度快得出乎你想象。你只须集中精力于应用程序本身,Rails就会帮你...
《#企业应用开发艺术CSLA.NET框架开发实战》(Expert C#2008 Business Objects)配套源码及例程csla-4.5.700。 CSLA .NET is a software development framework that helps you build a reusable, maintainable ...
ASP.NET Web API 2框架揭秘是一本注重实证的书,功能各异、多达120个可供下载的示例,大量实践与实用性扩展,可直接用于解决实际开发问题。全新的学习方法,通过完整论证来实现彻底的融会贯通。本书可以作为讲设计...
Orivil 是由 golang 开发的全新 web 框架,灵感来源于 Laravel 及 Symfony。注册服务func (*Register) RegisterService(c *service.Container) { // 注册 session 服务 c.Add(SvcSession, func(c *...
适合企业级开发1、框架采用多层架构,反射技术。2、权限管理里实现的功能:按钮管理、菜单管理、角色管理、用户管理、数据字典、单号...如果业务比较单一且相对简单,就可以直接调用或者使用Web Service/Remoting/WCF
源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周...如题,基于maven项目的ssm框架和cxf框架的整合。