web service

一、 Web service介绍:

1. Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML

2. Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。依据Web Service规范实施的应用之间, 无论它们所使用的语言、 平台或内部协议是什么, 都可以相互交换数据。

3. 同时,web service可以支持SOA编程,就是指在业务层的基础上添加一个服务层,服务层主要提供应用层需要的数据,就是通过web service的技术提供数据。

二、新建web service服务

三、新建一个webform应用程序app,去调用上面的服务

1. 添加服务引用,点击发现,如下:因为是本地的,所以点击发现,如果调用远程的,就需要输入ip地址和端口号。 

2. 如果服务端添加新方法,那么就需要执行以下操作,就能看到最新的方法

3.  web service返回list类型的数据,需要将数据进行json序列化才可以,不然会报异常。具体代码如下:

  /// <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";
        }
         [WebMethod]
        public int Add(int a, int b)
        {
            return a + b;
        }
        [WebMethod]
         public string LoadUserInfoList()
         {
             IBLL.IUserInfoService UserInfoService = new BLL.UserInfoService();
           List<Model.UserInfo>list= UserInfoService.LoadEntities(u=>true).ToList();
          return Common.SerializeHelper.SerializeToString(list);
            //SOA:面向服务。
         }
    }

4. 调用服务层的web service

ServiceReference1.WebService1SoapClient client = new ServiceReference1.WebService1SoapClient();
            // int sum= client.Add(3, 6);
        
       //直接根据上方对象调用其中的方法 Response.Write(client.LoadUserInfoList());

 5. 调用外部的web service

调用天气预报的webservice示例:

a. 请求地址:http://www.webxml.com.cn/webservices/weatherwebservice.asmx

b. 右击添加服务引用

c. 容易出的一个错误,检查以后发现,其中有两个下面的配置文件,因为重复了,所以报错,取掉其中一个就好了

d. 前端界面中放置一个GridView,然后调用数据,绑定在界面中。

//先new出一个对象
            ServiceReference2.WeatherWSSoapClient client = new ServiceReference2.WeatherWSSoapClient();
            //调用其中的一个方法,因为返回的类型是dateset类型的数据
            DataSet ds=client.getRegionDataset();
            //将第tables0的数据绑定在数据中
            this.GridView1.DataSource = ds.Tables[0];
            this.GridView1.DataBind();

e. 最终显示结果如下:

原文地址:https://www.cnblogs.com/wangjinya/p/10634355.html