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                 };

  就可以取到具体的数据~

  

原文地址:https://www.cnblogs.com/shadow-fei/p/4699772.html