客户端调用Xfire WebService(含JavaScript)

一 、通过Web服务端提供的接口来创建客户端 /** * 通过Web服务端提供的接口来创建客户端 * @see 客户端必须提供一个与服务端完全一致的接口,包名也要一致 * @see 并且此时需要在项目中引入XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries */ public class PortClient {public static void main(String args []){//首先使用XFire的ObjectServiceFactory从HelloService接口创建一个服务模型serviceModel//serviceModel包含服务的说明,换句话说,就是服务的元数据Service serviceModel = new ObjectServiceFactory().create(KingTeamService.class);//访问的地址String serviceURL = ":80/xfireD/services/KingTeamService";//为XFire获得一个代理工厂对象XFireProxyFactory factory = new XFireProxyFactory();try {//通过proxyFactory,使用服务模型serviceModel和服务端点URL(用来获得WSDL)//得到一个服务的本地代理,这个代理就是实际的客户端KingTeamService client = (KingTeamService)factory.create(serviceModel, serviceURL);/*** Invoke the service* @see 调用服务的本地代理(即实际的客户端)中的方法,,便得到我们需要的WebServcie*/int serviceResponse = client.jian(12,3);System.out.println(serviceResponse);} catch (MalformedURLException e) {e.printStackTrace();}}}

二、通过WSDL地址来创建动态客户端

public class KingTeamClient {public static void main(String args []){try {Client client = new Client(new URL(":80/xfireD/services/KingTeamService?wsdl"));Object[] k = client.invoke("jia", new Object[]{12,12});System.out.println(k[0]);} catch (MalformedURLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}}三、web页面JavaScript

JavaScirpt 代码:

<script type="text/javascript">function invokeServerFunction(){var xmlHttp;try{xmlHttp = new XMLHttpRequest();}catch(e){try{xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(e){alert("很遗憾, 您的浏览器不支持AJAX, 请使用其它浏览器, 如Firefox、Safari、Opera8.0+");return false;}}}xmlHttp.onreadystatechange = function(){if(4 == xmlHttp.readyState){alert(xmlHttp.status);if(200 == xmlHttp.status){//document.writeln("Web服务所返回的结果为:" + xmlHttp.responseText);document.getElementById("result").innerHTML = xmlHttp.responseText;}}};var data;data = '<?xml version="1.0" encoding="UTF-8"?>';//这里要注意,不建议写成下面这个样子,否则会报错//data = data + '<soap:Envelope xmlns:xsi=""//xmlns:xsd=""//xmlns:soap="">';//最好把这三个东西,写成一行data = data + '<soap:Envelope xmlns:xsi="" xmlns:xsd="" xmlns:soap="">';data = data + '<soap:Body>';//这里的<sayHello>标签,对应的是客户端所要调用的服务端的方法data = data + '<hello xmlns="com.yao.xfire.service/KingTeamServer">';//这里的<str>标签,对应的是传递给sayHello()方法的参数data = data + '<str>12,3</str>';data = data + '</hello>';data = data + '</soap:Body>';data = data + '</soap:Envelope>';//这是URL,即访问的地址,其格式为:端口/服务端项目/services/服务端提供的服务对外开放的名字var url = "";xmlHttp.open("POST", url, true);xmlHttp.setRequestHeader ("Content-Type","text/xml; charset=UTF-8");//这里的第二个参数,是服务端在services.xml中指定的<namespace>加上所要调用的sayHello()方法名xmlHttp.setRequestHeader ("SOAPAction","");xmlHttp.send(data); } </script>

页面HTML代码:<body> <input type="button" value="viewResult" onclick="invokeServerFunction()" /><br/> <br/>Web服务所返回的结果为:<span id="result"></span></body>

轻轻的风,吹开你紧锁的眉头,

客户端调用Xfire WebService(含JavaScript)

相关文章:

你感兴趣的文章:

标签云: