`
yanghuw
  • 浏览: 13465 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

在Web Service中调用继承对象

阅读更多
        与开发Web Service一样,有WSDL优先和代码优先两种方式。
      
       首先我们介绍WSDL优先的方式,采用这种方式我们先在XML Schema中定义一个基类的complexType ,然后使用扩展标签声明另一个 complexType 元素来扩展。
 <complexType name="Product">
<sequence>
<element name="name" type="string"/>
<element name="description" type="string"/>
</sequence>
</complexType>
<complexType name="ProductA">
<complexContent>
<extension base="Product">
<sequence>
<element name="spec" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
然后通过WSDL生成Product、ProductA及实现Web Service的相关的相关类。

采用代码优先的方式为,首先定义需要用到的两个基本对象:
class Product{
protected String name;
protected String description;

public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}

public String getDescription(){
return description;
}
public void setDescription(String description){
this.description = description;
}
 }
       class ProductA extends Product{
                private String spec;
	public String getSpec(){
return spec;
}
public void setSpec(String spec){
this.spec= spec;
}
}

创建Web Service的接口:
public interface IProduct{
void addProduct(Product prod);
Product[] getProducts();

void doNothing(ProductA a);
}

创建WebService的实现:
public class ProductService implements IProduct{
private List<Product> prods = new ArrayList<Product>();
public void addProduct(Product prod){
this.prods.add(prod);
}
public Product[] getProducts(){
return prods;
}
public void doNothing(ProductA a){}
}
       需要记住的是我们必需定义一个空方法将各个子类作为参数传入,如果没有该方法的话WSDL中不会产生Product各个子类的映射,从而Client端无法引用Product的子类。

       最后在写一个Client测试一下吧

            ProductService service = new ProductService();
            ProductServicePort port = service.getProductServicePort();
            
             Product p1 = new Product();
             p1.setName("prod");
             p1.setDescription("this is a product.");
             port.addProduct(p1);

             ProductA p2 = new ProductA();
             p2.setName("prod2");
             p2.setDescription("this is a ProductA.");
             p2.setSpec("spec");
             prot.addProduct(p2);

            Product[] result = port.getProducts();
            for(Product prod : result){
            System.out.println("Name = "+prod.getName());
                if(prod instanceof ProductA){
                    ProductA a = (ProductA)prod;
                   
                    System.out.println("Spec= "+a.getSpec());
                }
            }

      运行,会打印如下结果:
          prod
          this is Product.
          prod2
          this is ProductA.
          spec

    OK,大功千成!

分享到:
评论

相关推荐

    ASP.NET AJAX客户端访问Web Service及面向对象类型系统实例

    在“ASP.NET AJAX客户端访问Web Service及面向对象类型系统实例”中,我们将深入探讨如何利用AJAX技术在客户端与Web服务进行交互,以及如何在ASP.NET中应用面向对象的编程概念。 首先,我们要理解ASP.NET AJAX的...

    Web Service创建及调用

    类中的`Add`方法使用了`[WebMethod]`属性标记,表示这是一个可以通过Web Service调用的方法。 #### 三、如何调用Web Service 调用Web Service的过程通常涉及以下几个步骤: 1. **获取WSDL文件**:首先,需要从Web...

    IOS国内航班查询样例 web-service调用

    在这个"IOS国内航班查询样例 web-service调用"项目中,开发者创建了一个应用,它演示了如何利用自定义的UITableViewCell和XML数据来实现国内航班查询功能。这个应用的数据源是一个微软提供的Web Service接口,提供...

    web service调用与发布技术

    本主题将主要探讨XFire技术在实现Web服务调用与发布中的应用。 首先,理解Web服务的基本概念至关重要。Web服务是一种基于网络的、自包含的、模块化的应用程序,可以通过标准的协议(如HTTP)提供服务。它们使用XML...

    Web service应用实例

    在该类中,可以定义多个带有`[WebMethod]`属性的方法,这些方法将被暴露给外部调用。 示例代码片段展示了如何创建一个名为`Service`的Web服务类,包含一个`GETDATA`方法,返回一个自定义的结构体`TestData`。 **2....

    D6 SOAP_WEB SERVICE

    这些方法将在Web服务中暴露,供客户端调用。接口通常会继承自ISoapServerInterface,这是Delphi为SOAP服务提供的基础接口。 3. **实现服务**:创建一个类实现定义的接口,提供实际的服务逻辑。你可以在这里处理业务...

    Web Service的安全性解决方法

    在本文中,我们使用 SOAP 头信息来实现 Web Service 的安全性解决方法。下面是实现步骤: 步骤 1:建立 Credentials 类 首先,我们需要建立一个 Credentials 类,用于存储 Token 的 ID 和 PIN。该类继承于 System....

    使用XFire+Spring构建Web Service

    接着,在`web.xml`配置文件中设置XFireSpringServlet,以便对外提供Web Service服务。这一步骤确保了Spring与XFire的协作。 为了创建Web Service,你需要定义业务接口和其实现类。例如,你可以创建一个名为`Hello...

    VS2008新建、发布、调用Web服务

    ### VS2008新建、发布与调用Web服务详解 ...通过以上步骤,我们完成了在Visual Studio 2008中创建、发布以及调用Web服务的全过程。这些步骤不仅适用于简单的示例场景,也为更复杂的应用提供了基础。

    如何向WebServices中传送多个自定义类对象

    本篇将详细介绍如何在一个Web Service中定义一个方法来接收多个自定义类对象,并提供一个示例演示如何在客户端调用这个服务。 #### Web Service端实现 首先,我们来看看Web Service端的代码。这里定义了一个简单的...

    ATAXML Web Service 开发认证C#版

    在这个过程中,开发者需要理解XML的基础知识,掌握Web服务的概念,以及如何使用C#来创建、调用和处理ATAXML Web Service。下面我们将深入探讨这些关键知识点。 1. **XML(Extensible Markup Language)**: XML是...

    vb.net 和web service

    标题中的“vb.net 和web service”指的是在Visual Basic .NET(vb.net)环境中,如何创建和使用Web服务(Web Service)的技术。Web服务是一种基于互联网的、可互操作的应用程序接口,它允许不同系统间的通信和数据...

    web service

    这些函数需要标记为`[WebMethod]`,并设置为公共访问权限,以便可以通过Web Service调用。例如: ```csharp [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.Basic...

    C#Web+Service开发详解

    - 使用C#创建Web Service通常涉及创建一个新的ASP.NET Web Application项目,然后继承WebService类并添加方法。 - 在方法上添加[WebMethod]特性,标记该方法可被远程调用。 5. **部署与测试Web Service** - 部署...

    C语言Web service例子

    在IT行业中,Web服务是一种通过网络(通常是互联网)交换数据的方式。C语言,尽管不如其他高级编程语言(如Python或Java)那样常见于构建Web服务,但仍然可以通过库和框架来实现。本主题将深入探讨如何使用C语言来...

    C#创建windows服务+Form+Web调用服务

    在C#中,我们通常使用`System.ServiceProcess`命名空间中的`ServiceBase`类来创建Windows服务。首先,我们需要继承`ServiceBase`并重写必要的方法,如`OnStart`和`OnStop`,分别在服务启动和停止时执行相应的逻辑。...

    利用PB11开发Web Service应用

    该版本不仅继承了PB系列产品的优点,还在Web服务的支持方面实现了重大突破。通过PB11,开发者可以轻松创建.NET Web服务,并且这些服务能够无缝地与Java等其他平台进行通信。 #### 开发环境准备 在开始开发之前,请...

    语言程序设计资料:第13章_asp[1].net_Web_Service技术简介及应用.ppt

    - **添加Web引用**:在使用Web Service前,需要在客户端项目中添加对Web Service的引用,这会生成一个代理类,用于调用Web Service的方法。 - **调用Web Service**:通过实例化代理类,然后调用相应的方法,即可与...

    web service练习

    在这个"web service练习"中,我们将探讨如何使用Delphi作为客户端工具来调用一个ASP.NET实现的Web服务。Delphi是一款强大的Object Pascal集成开发环境,而ASP.NET则是一个用于构建Web应用程序的微软框架。 首先,让...

Global site tag (gtag.js) - Google Analytics