用c#编写简单的web服务实例

这个是一个简单的web服务实例,客户端通过添加web引用,使用编译好的web服务来查询特定城市的天气信息,由于只是作为模拟,所以没有使用到具体的数据库。下面给大家先看看服务器端的代码:

  1. using System;
  2. using System.Web;
  3. using System.Web.Services;
  4. using System.Web.Services.Protocols;
  5. [WebService(Namespace = "http://longqi293.com/")]
  6. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  7. public class Service : System.Web.Services.WebService
  8. {
  9.     public Service () {
  10.         //如果使用设计的组件,请取消注释以下行 
  11.         //InitializeComponent(); 
  12.     }
  13.     public enum TemperatureType//温度类型的枚举
  14.     {
  15.         Fahrenheit,
  16.         Celsius
  17.     }
  18.     public enum TemperatureCondition//天气类型枚举
  19.     {
  20.         Rainy,
  21.         Sunny,
  22.         Cloudy,
  23.         Thunderstorm
  24.     }
  25.     public class GetWeatherRequest//请求信息
  26.     {
  27.         public string city;
  28.         public TemperatureType TemperatureType;
  29.     }
  30.     public class GetWeatherResponse//返回信息
  31.     {
  32.         public TemperatureCondition Condition;
  33.         public int Temperature;
  34.     }
  35.     [WebMethod]
  36.     public GetWeatherResponse GetWeather(GetWeatherRequest req)//获得信息的主要方法
  37.     {
  38.         GetWeatherResponse resp = new GetWeatherResponse();
  39.         Random r = new Random();
  40.         int celsius = r.Next(-20, 50);//随即生成温度,实际可以从数据库查询
  41.         if (req.TemperatureType == TemperatureType.Celsius)
  42.         {
  43.             resp.Temperature = celsius;
  44.         }
  45.         else
  46.         {
  47.             resp.Temperature = (212 - 32) / 100 * celsius + 32;
  48.         }
  49.         if (req.city == "Kunming")
  50.         {
  51.             resp.Condition = TemperatureCondition.Sunny;
  52.         }
  53.         else
  54.         {
  55.             resp.Condition = (TemperatureCondition)r.Next(0, 3);
  56.         }
  57.         return resp;
  58.     }
  59.     
  60.     
  61. }

下面你需要先运行这个服务但是注意进行如下图的选择:

之后看到下图,记住那http地址:

至此,服务器端开发完毕。下面进入客户端开发,我们使用的是win form形式的,界面如下图:

在“项目”种选择“添加web引用”,输入刚才记下的http地址,如下图:

将引用名改为WeatherService,在程序头添加using webserviceClient.WeatherService;

之后再添加按钮“获取天气”的click事件代码如下:

  1. private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             GetWeatherRequest req = new GetWeatherRequest();
  4.             if (radioButton1.Checked == true)
  5.             {
  6.                 req.TemperatureType = TemperatureType.Celsius;
  7.             }
  8.             else
  9.             {
  10.                 req.TemperatureType = TemperatureType.Fahrenheit;
  11.             }
  12.             req.city = textBox3.Text;
  13.             Service ws = new Service();
  14.             GetWeatherResponse resp = ws.GetWeather(req);
  15.             textBox1.Text = resp.Condition.ToString();
  16.             textBox2.Text = resp.Temperature.ToString();
  17.             
  18.         }

最后运行如下图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值