zoukankan      html  css  js  c++  java
  • 从 URL 调用 WebService

        在ASPX页面中调用一个 asmx WebService 最通常的做法是通过 IDE 加入 Web 引用,这种方法的方便之处在于我们只需知道 asmx 文件的 URL 路径和公开的方法名即可在 ASPX 页面中调用并反序列化为本地的对象。但有时候这种方法会带来某些维护方面的问题,如 WebService 的路径一旦变动我们将不得不重新引用新的 URL 路径,重新编译项目。

        通过 URL 来访问 WebService 可以很好地解决维护带来的问题,我们可以将 asmx 文件的路径写入配置文件,而后通过读取配置文件中指定的 URL 来调用 WebService 公开的方法并反序列化为本地的对象以供使用。

        我们以 VS2005 为工具讲解使用:

        首先,新建一个站点或Web项目(需要安装插件),打开站点根目录下的 Web.config 配置文件,在 configuration 节点下新建一个 appSettings 节点,之后再加入如下代码

    <add key="WSServer1" value="http://putYourDominHere/WebService.asmx" />

        之后,在适当的位置创建一个 WebServiceFactory.cs 文件,通过过这个文件实现 WebService 的读取工作。我们假设 WebService.asmx 中有一个公开的方法 GetScrapCategory,这个方法返回报废类型的一个 DataTable 实例。

    /**
     *  Class : WebServiceFactory
     * Author : Gary Fu
     * Create : July 10, 2008
     
    */

    using System;
    using System.Configuration;
    using System.Diagnostics;
    using System.Xml.Serialization;
    using System.Web.Services.Protocols;
    using System.ComponentModel;
    using System.Web.Services;


    /// <summary>
    /// Summary description for WebServiceFactory
    /// </summary>
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute(
    "code")]
    [System.Web.Services.WebServiceBindingAttribute(Name 
    = "WebServiceFactorySoap", Namespace = "http://tempuri.org/")]
    public class WebServiceFactory : System.Web.Services.Protocols.SoapHttpClientProtocol
    {
        
    public WebServiceFactory()
        {
        }

        
    /// <summary>
        
    /// 返回一个包含有 ScrapCategory 的 DataTable
        
    /// </summary>
        
    /// <returns></returns>
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetScrapCategory"
            RequestNamespace 
    = "http://tempuri.org/"
            ResponseNamespace 
    = "http://tempuri.org/"
            Use 
    = System.Web.Services.Description.SoapBindingUse.Literal, 
            ParameterStyle 
    = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        
    public System.Data.DataTable GetScrapCategory()
        {
            
    this.Url = ConfigurationManager.AppSettings["WSServer1"];
            
    object[] result = this.Invoke("GetScrapCategory"new object[0]);
            
    return (System.Data.DataTable)result[0];
        }

    }

        再之后,在需要的页面调用 WebServiceFactory 新实例的 GetScrapCategory() 方法返回一个 DataTable.

  • 相关阅读:
    java 接口和抽象类的一个最大的区别
    python 简化数据结构的初始化二 支持关键字参数
    python 简化数据结构的初始化一
    python @staticmethod
    python @classmethod
    codeskulptor hosts
    An Introduction to Interactive Programming in Python (Part 1) -- Week 2_2 练习
    An Introduction to Interactive Programming in Python (Part 1) -- Week 2_1 练习
    mysql-5.7.14-winx64免安装版在win10下的详细配置过程
    python 反模式
  • 原文地址:https://www.cnblogs.com/wfyfngu/p/1240868.html
Copyright © 2011-2022 走看看