加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

客户端调用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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读