客户端调用Xfire WebService(含JavaScript)
发布时间:2020-12-16 23:01:21 所属栏目:安全 来源:网络整理
导读:一 、通过Web服务端提供的接口来创建客户端 /** * 通过Web服务端提供的接口来创建客户端 * @see 客户端必须提供一个与服务端完全一致的接口,包名也要一致 * @see 并且此时需要在项目中引入XFire 1.2 Core Libraries和XFire 1.2 HTTP Client Libraries */ pu
一 、通过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 = "http://localhost: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("http://localhost: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="http://www.w3.org/2001/XMLSchema-instance" // xmlns:xsd="http://www.w3.org/2001/XMLSchema" // xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'; //最好把这三个东西,写成一行 data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'; 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,即访问的地址,其格式为http://IP:端口/服务端项目/services/服务端提供的服务对外开放的名字 var url = "http://127.0.0.1/xfireD/services/KingTeamService"; xmlHttp.open("POST",url,true); xmlHttp.setRequestHeader ("Content-Type","text/xml; charset=UTF-8"); //这里的第二个参数,是服务端在services.xml中指定的<namespace>加上所要调用的sayHello()方法名 xmlHttp.setRequestHeader ("SOAPAction","http://com.yao.xfire.service/KingTeamService/hello"); xmlHttp.send(data); } </script> 页面HTML代码: <body> <input type="button" value="viewResult" onclick="invokeServerFunction()" /> <br/> <br/> Web服务所返回的结果为:<span id="result"></span> </body> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |