使用 Apache AXIS 消费 .NET Web 服务






3.93/5 (21投票s)
使用 Apache AXIS 消费 .NET Web 服务。
引言
在本文中,我将展示一个如何在 IIS 上使用 .NET 开发一个典型的 HelloWorld Web 服务,以及如何在 Java 中使用 Apache AXIS 消费该服务的示例。Apache AXIS 是 Apache 提供的 SOAP 实现。AXIS SOAP 实现提供 C++ 和 Java 两种语言版本。在本文中,我将使用 AXIS SOAP 的 Java 实现。Apache AXIS 可以从 这里 下载。
HelloWorld.asmx 文件是 C# 中的一个简单的文本文件。HelloWorld
类只是继承了 WebService
类,并实现了一个方法 SayHelloWorld()
。为了使该方法成为一个 Web 方法,它被赋予了属性 [WebMethod]
。IIS 负责生成 SOAP 消息和客户端的 WSDL 文件。
IIS 文件中的 Web 服务
<%@ WebService Language="C#" Class="HelloWorld" %>
using System;
using System.Web.Services;
public class HelloWorld : WebService
{
[WebMethod] public String SayHelloWorld()
{
return "Hello World";
}
}
要使用 AXIS 消费此 Web 服务,需要下载 HelloWorld Web 服务的 WSDL 文件。
现在,为了消费此 Web 服务,Apache AXIS 提供了一个工具 WSDL2Java,可以将 WSDL 规范文件转换为 Java 代码。该工具会生成四个 Java 类,这些类将负责处理 XML 和 SOAP 消息,并使 Web 服务的调用就像调用本地对象一样简单。
> java org.apache.axis.wsdl.WSDL2Java https:///HelloWorld.asmx?WSDL
上述工具将生成以下四个类文件,可用于访问该 Web 服务。
- HelloWorld.java
- HelloWorldLocator.java
- HelloWorldSoap.java
- HelloWorldSoapStub.java
客户端程序如下所示
package org.tempuri;
public class Client
{
public static void main(String [] args)
{
try
{
HelloWorldLocator loc = new HelloWorldLocator();
HelloWorldSoap port = loc.getHelloWorldSoap();
System.out.println(port.sayHelloWorld());
}
catch(Exception e)
{System.out.println(e.getMessage());}
}
}
在接触 Apache AXIS 之前,我对在 Java 中开发和消费 Web 服务的第一反应是它非常痛苦。但是有了 Apache AXIS,开发和消费 Web 服务就像在 .NET 平台一样简单。