• WebService


    前言

      自我感觉WebService没有太多东西,就简单记录一下。

    建立

      新建一个为空的Web项目,添加一个Web服务,会自动生成一个asmx文件,右键该文件,选择“设置为起始页”,双击该文件。

       /// <summary>
        /// WebService1 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
        // [System.Web.Script.Services.ScriptService]
        public class WebService1 : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
        }
    

      F5运行,会启动默认浏览器,会打开一个网页,里面有一个连接“HelloWorld”,这个就是HelloWorld的方法,点击进入另一个界面,显示“HelloWorld”,下面有一个“调用”按钮,点击出显示一个XML格式的内容,这是返回string类型。

    1 <string>Hello World</string>

    新建方法

      如何返回的是实体,会是什么样子,先新建一个Company类,简单定义Id,CompanyName和CompanyAddress属性。

     1     /// <summary>
     2     /// 公司
     3     /// </summary>
     4     public class Company
     5     {
     6         /// <summary>
     7         /// Id
     8         /// </summary>
     9         public int Id { get; set; }
    10 
    11         /// <summary>
    12         /// 名称
    13         /// </summary>
    14         public string CompanyName { get; set; }
    15 
    16         /// <summary>
    17         /// 地址
    18         /// </summary>
    19         public string CompAddress { get; set; }
    20     }

      重新定义一个GetCompanyList方法,[]里面WebMethod,定义该方法是Web方法,()里面Description是对该方法的一个描述,在网页的Web方法先马会有一段说明,及为该内容。

     1         /// <summary>
     2         /// 得到公司信息
     3         /// </summary>
     4         /// <returns></returns>
     5         [WebMethod(Description = "得到公司信息")]
     6         public List<Company> GetCompanyList()
     7         {
     8             List<Company> compList = new List<Company>();
     9             compList.Add(new Company { Id = 1, CompanyName = "First", CompAddress = "北京" });
    10             compList.Add(new Company { Id = 2, CompanyName = "Second", CompAddress = "天津" });
    11             compList.Add(new Company { Id = 3, CompanyName = "Third", CompAddress = "河北" });
    12             return compList;
    13         }

      这样会传输什么呢,还是XML格式

    1 <ArrayOfCompany><Company><Id>1</Id><CompanyName>First</CompanyName><CompAddress>北京</CompAddress></Company><Company><Id>2</Id><CompanyName>Second</CompanyName><CompAddress>天津</CompAddress></Company><Company><Id>3</Id><CompanyName>Third</CompanyName><CompAddress>河北</CompAddress></Company></ArrayOfCompany>

      乍看,好像挺好的,没什么问题,但是如果成千上万条大的数据会如何,XML会很大,传输的string也会很大,难道就没有好的方法?Json出现了,Json把一些属性名缩减为一个简短的代号,来传输,这样就减少了很多,Json在这就不多说了,有时间再专门写它。

      最后就是发布,配置。在项目中右键“添加服务引用(S)”,填写配置的地址,“转到”可以查看链接状态,命名为“TestService”,然后确定,成功添加该服务。

      代码中

     1             TestService.WebService1 testService = new TestService.WebService1();
     2             testService.GetCompanyListAsync();
     3             testService.GetCompanyListCompleted += (x,y) =>
     4                 {
     5                     //访问webservice错误
     6                     if(y.Error != null)
     7                     {
     8                     }
     9                     else
    10                     {
    11                         //出错
    12                         if (y.Result == null)
    13                         {
    14                         }
    15                         else
    16                         {
    17                             List<Company> CompanyList = new List<Company>();
    18                             TestService.Company[] companyArray = y.Result;
    19                             foreach (var tempComp in companyArray)
    20                             {
    21                                 Public.PublicBase.CompanyList.Add(new Company { Id = tempComp.Id, CompanyName = tempComp.CompanyName, CompanyAddress = tempComp.CompAddress });
    22                             }
    23      24                         }
    25                     }
    26                     27                 };

      就可以取到具体的数据~

      

  • 相关阅读:
    安装IIS的郁闷之旅
    设置WPF窗口相对于非WPF窗口的位置
    钓鱼记
    java拾遗
    人间四月芳菲尽
    [linux] x server can not start under VMWare
    如果没有开源软件没有免费软件,这个世界会怎么样?评[盖茨北大演讲遭遇开源人士抗议]
    程序员的面包
    2007中国软件英雄会-七年的等待
    sysbench安装
  • 原文地址:https://www.cnblogs.com/shadow-fei/p/4699772.html
Copyright © 2020-2023  润新知