java webService 技术

Web Service介绍

Web Service是一项新技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 因为它们基于一些常规的产业标准以及已有的一些技术,诸如XML和HTTP。Web Service减少了应用接口的花费。Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。

Web service是一个平台独立的,松耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。

web广泛用到的技术:
 
◆TCP/IP:通用网络通信协议,被各种设备使用
◆HTML:通用用户界面,可以使用HTML标签显示数据
◆Java:写一次可以在任何系统运行的通用编程语言,因为java具有跨平台特性
◆XML :通用数据表达语言,在web上传送结构化数据的容易方法
其特点是开放性,跨平台性,开放性正是Web services的基础。
 
webService技术框架应用:

1,axis框架
客户端调用代码:

public String invokeWebService(String soapHeaderName, String endpointURL,
	String namespaceURL, String methodName,
	Map<String, Object> soapHeaderParams, String[] paramsName,
	Object[] paramsValue, QName returnType) {
	Service service = new Service();
	Call call = null;
         try {
	  call = (Call) service.createCall();
	  call.setTargetEndpointAddress(new java.net.URL(endpointURL));
	  call.setUseSOAPAction(true);
	  call.setSOAPActionURI(namespaceURL + methodName);
	  call.setOperationName(new QName(namespaceURL, methodName));
         } catch (ServiceException serviceException) {
	  serviceException.printStackTrace();
	} catch (MalformedURLException urlException) {
	  urlException.printStackTrace();
	}
	// 创建请求消息soap头
	if (!"".equals(soapHeaderName)) {
		SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(
				namespaceURL, soapHeaderName);
		soapHeaderElement.setNamespaceURI(namespaceURL);
		if (soapHeaderParams == null) {
		     return "";
		} else {
		     Set<String> keys = soapHeaderParams.keySet();
		     Iterator<String> key = keys.iterator();
		     while (key.hasNext()) {
		     String mapKey = key.next();
		     try {
		          soapHeaderElement.addChildElement(mapKey).setValue(
			 String.valueOf(soapHeaderParams.get(mapKey)));
		     } catch (SOAPException e) {
			 e.printStackTrace();
		     }
		}
		call.addHeader(soapHeaderElement);
	}
}
		// 创建请求正文参数
		if (paramsName != null && paramsName.length > 0) {
			for (int i = 0; i < paramsName.length; i++) {
				call.addParameter(new QName(namespaceURL, paramsName[i]),
						XMLType.XSD_STRING, ParameterMode.IN);
			}
		}
		// 设置返回调用返回值类型
		call.setReturnType(returnType);
		try {
			return (String) call.invoke(paramsValue);
		} catch (RemoteException e) {
			e.printStackTrace();
			return "";
		}
	}

 main 函数调用测试:

public static void main(String args[]) {
	Map<String, Object> soapHeaderParams = new HashMap<String, Object>();
	soapHeaderParams.put("UserName", "test");
	soapHeaderParams.put("PassWord", "test");
	AxisServerClient axisClient = new AxisServerClient();
	Map<String, Object> RequestMap = new HashMap<String, Object>();
	RequestMap.put("Type", "0");
	String requestXML = axisClient.getRequestXML(RequestMap);
	System.out.println(requestXML);
	String responseDoc = axisClient.invokeWebService("RipSoapHeader",
			"http://192.168.0.73:8081/RipWebService.asmx",
			"http://rip.org/", "GetBookDateList", soapHeaderParams,
		         new String[] { "RequestXml" }, new Object[] {requestXML},
				XMLType.XSD_STRING);
	System.out.println(responseDoc);
}

 

posted on 2013-06-15 10:48  大山下的蚂蚁  阅读(557)  评论(0编辑  收藏  举报

导航