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.

  • 相关阅读:
    8天学通MongoDB——第三天 细说高级操作
    8天学通MongoDB——第二天 细说增删查改
    8天学通MongoDB——第一天 基础入门
    Redis Web界面管理工具
    Redis 起步
    使用 Swagger UI 与 Swashbuckle 创建 RESTful Web API 帮助文件
    面试应该如何面?
    Login oracle for external authenticate
    突然发现我脾气变好了
    一种持续构建构想
  • 原文地址:https://www.cnblogs.com/wfyfngu/p/1240868.html
Copyright © 2011-2022 走看看