用Apache Axis 实现Web Service(三)

本文介绍如何使用Apache Axis调用Web Service,包括动态调用接口(DII)、动态代理和桩(Stubs)三种方式。通过示例代码展示了DII的简单应用,实现了对HelloWorld Web服务的调用并获取响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

三. Web Servie的客户端使用

一个Web Service部署到服务器上之后,就可以提供给其他应用程序调用。调用一个Web Service其实很简单,并不需要进行特别的设置。比如,我们前面用http://localhost:8080/axis/HelloWorld.jws?wsdl访问,就是就Web Servicede 的一种调用。当然,这种说法不够严格。调用Web Service应该是调用其提供的方法,我们用这种方式调用:http://localhost:8080/axis/HelloWorld?method=sayHello&userName=brookes,结果我们得到下面的页面:

<? xml version="1.0" encoding="UTF-8"  ?>  
< soapenv:Envelope  xmlns:soapenv ="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:xsd ="http://www.w3.org/2001/XMLSchema"  xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance" >
< soapenv:Body >
< sayHelloResponse  soapenv:encodingStyle ="http://schemas.xmlsoap.org/soap/encoding/" >
  
< sayHelloReturn  xsi:type ="xsd:string" > Hello brookes,Welcome to my Web Service. </ sayHelloReturn >  
  
</ sayHelloResponse >
  
</ soapenv:Body >
</ soapenv:Envelope >

这是一个标准的的SOAP协议的XML回复,其中关键是<sayHelloReturn>元素,这就是Web Servcie对sayHello方法的响应!我们只需要解析这个XML文件,就可以得到想要的响应。(可参考XMLHttpRequest相关文档)

Apache Axis支持三种客户端访问Web Service的方式:

1. Dynamic Invocation Interface(DII) 动态调用接口
2. Dynamic Proxy 动态代理
3. Stubs 桩

【注】我看到有的资料上将上面三种方式列为Web Servcie的三种“开发部署方法”,我认为说法欠妥。开发如果包含了客户端开发尚且说的过去,部署似乎更应专指服务器端。我的理解也是一家之言,欢迎指正。

我们先来看DII方法,核心代码如下(我们使用了前面的HelloWorld Web服务):

 

import  org.apache.axis.client.Call;
import  org.apache.axis.client.Service;
import  javax.xml.namespace.QName;
public   class  WsTest
        
public static void main(String[] args){
               
try{
                          String endpoint 
=  "http://localhost:8080/axis/HelloWorld.jws";
                          Service service 
= new Service();            
                          Call call 
= null;            
                          call 
= (Call) service.createCall();            
                          call.setOperationName(
new QName( "http://localhost:8080/axis/HelloWorld.jws","sayHello"));            
                          call.setTargetEndpointAddress(
new java.net.URL(endpoint));            
                          String response 
= (String) call.invoke(new Object[]{"Brookes"});            
                          System.out.println(
"return value is: " + response);
              }
catch (Exception ex){ ex.printStackTrace();}
        }

}

运行程序,得到如下输出信息:

return value is: Hello Brookes,Welcome to my Web Service.

用DII方式访问Web Service就是这么简单!

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值