`
xly_971223
  • 浏览: 1276773 次
  • 性别: 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呢?更简单了。

相关推荐

    XML Web Service开发

    在实际开发中,有许多工具和框架可以帮助我们创建和使用XML Web Service,如Java的JAX-WS、.NET的ASP.NET Web Service、PHP的SOAP扩展等。这些工具通常简化了WSDL生成、SOAP消息处理等复杂任务。 六、安全考虑 XML ...

    Web Service XFire框架开发指南

    **Web Service XFire框架开发指南** Web Service是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行交互。XFire是Java平台上的一个开源Web Service框架,它提供了一种简单...

    如何使用Eclipse开发Web Service

    【如何使用Eclipse开发Web Service】 在开发Web Service时,Eclipse作为一个强大的集成开发环境(IDE),提供了便捷的工具和插件支持。本篇将详细阐述如何在Eclipse中进行Web Service的开发。 1. **准备工作** ...

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

    本篇将深入探讨C#环境下开发Web Service的相关知识点。 首先,理解Web Service的基础概念至关重要。Web Service是一种基于互联网的、使用开放标准(如SOAP、WSDL和UDDI)进行通信的应用程序,它允许不同系统间的...

    Web Service开发指南

    在本指南中,我们将深入探讨如何使用AXIS和xfire、cxf这两个流行的Java库来开发Web Service。 **AXIS工具包** AXIS是Apache软件基金会的一个项目,主要用于简化Web Service的开发、部署和调用。AXIS提供了一个强大...

    用axis2开发web service

    【用Axis2开发Web Service】是本文的核心主题,轴心技术是Java开发Web服务的一种框架,相较于Axis1,其过程更为简洁。以下是关于使用Axis2开发Web Service的详细步骤和知识点: 1. **实验环境搭建**: - 首先确保...

    xfire开发Web Service接口详解

    本篇文章将深入探讨如何使用XFire来开发Web Service接口,并提供一个初学者友好的教程。 一、XFire简介 XFire(后被集成到Apache CXF项目)是一款轻量级的Java Web服务框架,它提供了快速、简单的方式来创建符合WS-...

    CXF开发Web Service实例demo

    在"Web Service学习-CXF开发Web Service实例demo(一)"中,我们将专注于SOAP Web Service的实现。以下是一些关键步骤: 1. **创建服务接口**:首先,你需要定义一个Java接口,这个接口会成为你的Web Service接口。...

    MyEclipse下开发Web Service(Axis)2

    MyEclipse下开发Web Service(Axis)2 一、环境准备 在使用 Axis 开发 Web Service 时,需要准备 web 服务器和 Axis API。本文使用的 Web container 是 Tomcat5.5,Axis API 采用版本 2。为便于开发,需要 downloads...

    Web service开发指南

    其API简洁易用,使得开发Web服务更为高效。 ### 4. CXF框架 Apache CXF是目前最广泛使用的Java Web服务框架,结合了Axis和XFire的优点。CXF提供全面的工具和API,支持SOAP、REST、WS-*规范(如WS-Security、WS-...

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

    在“用于IDEAL开发Web Service的springframe框架的jar包”中,"spring-framework-master"可能是指Spring框架的源码仓库。如果你正在使用IDEAL进行开发,这个压缩包可以让你深入了解Spring的工作原理,并可能包含了...

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

    - 开发Web Service通常涉及接口定义和服务实现。例如,创建一个名为`HelloService`的接口,其中包含一个`sayHello`方法,该方法接收一个字符串参数`name`并返回一个问候的字符串。 - 然后,创建一个实现类`...

    web service 开发文档

    Axis提供了一个简单的框架来开发和部署Web Service。 - **配置服务器端**:配置Axis服务器,使其能够处理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;

    MyEclipse+xFire开发Web Service

    【MyEclipse+xFire开发Web Service】是一个关于如何使用MyEclipse集成开发环境和xFire框架来构建和测试Web服务的教程。xFire是一个基于Java的SOAP框架,它提供了轻量级的信息处理机制,利用STAX进行SOAP消息处理。这...

    SSH框架下WEB开发

    SSH框架是Java Web开发中广泛使用的一套技术栈,由Spring、Struts和Hibernate三个开源框架组合而成。这个框架组合提供了完整的MVC(Model-View-Controller)设计模式支持,帮助开发者构建高效、灵活且可扩展的Web...

    Axis2与Eclipse整合开发的Web Service的服务端

    【描述】:本文将详细介绍如何在Eclipse环境中利用Axis2框架开发一个Web Service服务端,包括计算器服务CalculateService的实现步骤。 【标签】:Axis2, Eclipse, 整合开发, Web Service 【内容】: 开发Web ...

Global site tag (gtag.js) - Google Analytics