`
xly_971223
  • 浏览: 1264900 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

不用任何框架开发web service

    博客分类:
  • java
阅读更多
很讨厌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();
	}
	
}


就是这么简单
1
1
分享到:
评论
4 楼 danni505 2011-03-07  
xly_971223 写道
hareamao 写道
都这么简单了,为什么不REST呢?更简单了。

我倒是想用
可惜是跟联通做通讯 人家说了算

这就是做供应商的杯具,我们的甲方是用REST的,还不错
3 楼 vtrtbb 2010-08-07  
哎,你为啥不用JAX-RPC 呢?比你这个还要简单的多
2 楼 xly_971223 2010-07-20  
hareamao 写道
都这么简单了,为什么不REST呢?更简单了。

我倒是想用
可惜是跟联通做通讯 人家说了算
1 楼 hareamao 2010-07-19  
都这么简单了,为什么不REST呢?更简单了。

相关推荐

    Web Service XFire框架开发指南

    Web Service XFire框架开发指南,pdf格式

    web service开发 cxf框架帮助文档

    cxf的帮助文档 . 开发web service的一个很简单的框架,很容易上手的

    Web Service编程:用C#_NET开发网络服务

    Web Service编程--用C#.NET开发网络服务(1...Web Service基础 第六章 ASP.NET和ADO.NET 第七章 XML Web Service 第八章 SOAP、WSDL和UDDI 第九章 开发基于.NET平台的Web服务 附录A .NET框架类库 &lt;br&gt;

    Jersey Java规范下REST风格Web Service开发框架

    Jersey Java规范下REST风格Web Service开发框架

    使用Axis开发Web Service程序

    使用Axis开发Web Service程序 在文档中进行了最简单的说明和举例 对于简单框架搭建进行了代码举例

    Web Service框架xfire与spring集成开发流程

    XFire 是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。 相对于Axis来说,目前XFire相对受欢迎,加上其提供了和Spring集成的支持,在...

    Spring Web Service实例

    好像没有多少人讨论, 大多数的话题都是围绕xfire, cxf, axis/axis2等主流的Web Service框架.尽管是从事这方面的工作, 不过实际开发中还是公司内部开发的一个Web Service模块, 发现与Spring提供的这个模块的构架很像...

    用于IDEAL开发web service的springframe框架的jar包

    包含了ideal开发webservices的所有的framework的框架以及其他的jar包

    CXF框架应用在Web项目中

    Ⅰ)开发web service业务接口,该接口用@WebService修饰; Ⅱ)开发web service业务接口的实现类,也要用@WebService修饰; Ⅲ)使用EndPoint类的静态方法publish()来发布web service。 2、客户端 Ⅰ)调用CXF...

    android基于soap协议的web service调用(不用框架)

    网络上很多基于ksoap2开发包的WEB SERVICE调用,虽然ksoap2不大,但是内部细节不是很清楚。本代码可以基于http协议,拼凑SOAP协议,完成.net以及java开发的web service调用。供大家分享!内部也有一例是基于ksoap2...

    ASP.NET与Web Service实例剖析中文版.rar

    實例介紹 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 ......

    ROP(Rest Open Platform)用户开发手册

    它不同于传统的SOAP Web Service和Rest Web Service这些Web Service 技术型框架,Rop是一个应用型的Web Service平台框架,它不但可以方便快捷地开发一个个Web Service服务,还提供了服务平台领域问题的整体解决方案...

    java开发框架研究

    java开发框架研究 系统讲述java开发原理 和web service

    Web开发敏捷之道-应用Rails进行敏捷Web开发(第3版).pdf

    《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》:Ruby on Rails是一个全套的MVC web框架,它能帮你开发高质量又美观的web应用,而且开发速度快得出乎你想象。你只须集中精力于应用程序本身,Rails就会帮你...

    《#企业应用开发艺术CSLA.NET框架开发实战》配套源码及例程csla-4.5.700

    《#企业应用开发艺术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框架揭秘

    ASP.NET Web API 2框架揭秘是一本注重实证的书,功能各异、多达120个可供下载的示例,大量实践与实用性扩展,可直接用于解决实际开发问题。全新的学习方法,通过完整论证来实现彻底的融会贯通。本书可以作为讲设计...

    Go的Web框架Orivil.zip

    Orivil 是由 golang 开发的全新 web 框架,灵感来源于 Laravel 及 Symfony。注册服务func (*Register) RegisterService(c *service.Container) {  // 注册 session 服务  c.Add(SvcSession, func(c *...

    aspnet Easyui开发框架源码

    适合企业级开发1、框架采用多层架构,反射技术。2、权限管理里实现的功能:按钮管理、菜单管理、角色管理、用户管理、数据字典、单号...如果业务比较单一且相对简单,就可以直接调用或者使用Web Service/Remoting/WCF

    ssm+cxf(基于Maven开发的ssm框架集成cxf发布web service服务)

    源码里面包含了了一个简单的插入功能,主要是为了测试mybatis是否连接上数据库的时候写的测试类,作为一个刚学java,被抓壮丁的写服务器端的妹子,我只想说,画了我3周...如题,基于maven项目的ssm框架和cxf框架的整合。

Global site tag (gtag.js) - Google Analytics