1.创建Web服务

1.1VS新建ASP.Net空Web应用程序

1.2添加Web服务新建项

1.3添加GetWeather方法和相关类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Services;
  6. using System.EnterpriseServices;
  7.  
  8. namespace WebService
  9. {
  10. /// <summary>
  11. /// WebService1 的摘要说明
  12. /// </summary>
  13. [WebService(Namespace = "http://tempuri.org/",Name ="WebServiceTest" ,Description ="test" ) ]
  14. [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  15. [System.ComponentModel.ToolboxItem(false)]
  16. // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  17. // [System.Web.Script.Services.ScriptService]
  18. [Description("")]
  19. public class WebService1 : System.Web.Services.WebService
  20. {
  21.  
  22. [WebMethod]
  23. public string HelloWorld()
  24. {
  25. return "Hello World";
  26. }
  27.  
  28. [WebMethod]
  29. public string ReverseString(string message)
  30. {
  31. if (message.Contains(""))
  32. throw new Exception("不能包含1");
  33. else
  34. return new string( message.Reverse().ToArray());
  35. }
  36.  
  37. [WebMethod]
  38. public GetWeatherResponse GetWeather(GetWeatherRequest req)
  39. {
  40. GetWeatherResponse resp = new GetWeatherResponse();
  41. Random r =new Random();
  42. int celsius = r.Next(-, );//返回-20到50之间的一个数
  43. if (req.TemperatureType == TemperatureType.Celsius)
  44. resp.Temperature = celsius;
  45. else
  46. resp.Temperature = ( - ) / * celsius + ;//摄氏度转换成华氏温度
  47.  
  48. if (req.City == "RedMond")
  49. resp.TemperatureCondition = TemperatureCondition.Rainy;
  50. else
  51. resp.TemperatureCondition = (TemperatureCondition)r.Next(, );//随机取出一个天气
  52.  
  53. return resp;
  54. }
  55.  
  56. }
  57.  
  58. public enum TemperatureType
  59. {
  60. Fahrenheit,//华氏温度
  61. Celsius//摄氏度
  62. }
  63.  
  64. public class GetWeatherRequest
  65. {
  66. public string City { get; set; }
  67. public TemperatureType TemperatureType { get; set; }
  68. }
  69.  
  70. /// <summary>
  71. /// 天气情况
  72. /// </summary>
  73. public enum TemperatureCondition
  74. {
  75. Rainy,
  76. Sunny,
  77. Cloudy,
  78. Thunderstorms//雷暴天气
  79. }
  80.  
  81. public class GetWeatherResponse
  82. {
  83. public TemperatureCondition TemperatureCondition { get; set; }
  84. public int Temperature { get; set; }//温度
  85. }
  86. }

2.调用web服务

2.1新建Winfrom应用程序WebServiceSample

界面如下

2.2添加服务引用

在引用右键添加服务引用,输入webservice地址

高级里面勾选生成异步操作

2.3 在GetWeather按钮中 调用web服务,代码如下

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using WebServiceSample.WebServiceTest;
  10.  
  11. namespace WebServiceSample
  12. {
  13. public partial class GetWeatherForm : Form
  14. {
  15. public GetWeatherForm()
  16. {
  17. InitializeComponent();
  18. }
  19.  
  20. private void btnGetWeather_Click(object sender, EventArgs e)
  21. {
  22. GetWeatherRequest req = new GetWeatherRequest();
  23. if(radioCelsius.Checked)
  24. req.TemperatureType = TemperatureType.Celsius;
  25. else
  26. req.TemperatureType =TemperatureType.Fahrenheit ;
  27. req.City = txtCity.Text;
  28.  
  29. WebServiceTestSoapClient client = new WebServiceTestSoapClient();
  30. client.GetWeatherCompleted += GetWeatherCompleted;
  31. client.GetWeatherAsync(req);
  32. }
  33.  
  34. void GetWeatherCompleted(object source, GetWeatherCompletedEventArgs e)
  35. {
  36. if (e.Error == null)
  37. {
  38. txtTemperature.Text = e.Result.Temperature.ToString();
  39. txtWeatherCondition.Text = e.Result.TemperatureCondition.ToString();
  40. }
  41. else
  42. {
  43. MessageBox.Show(e.Error.Message);
  44. }
  45. }
  46. }
  47. }

25.C# 异步调用Web服务的更多相关文章

  1. mvc路由引起异步调用web服务的问题

    从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果. 首先在UI项目(我使用的是MVC4.0)里创建一个Web服务. 添加Web服务后 ...

  2. HttpClient异步调用WEB服务

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  3. 动态调用web服务

    通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...

  4. Android调用Web服务

    现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...

  5. 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法

    技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...

  6. 在 SQL Server 的存储过程中调用 Web 服务

    介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...

  7. Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token

    原文:Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务.WCF消息头添加安全验证Token 为什么选择wcf?   因为好像wcf和wpf就是哥俩,,, 为什么选择异步 ...

  8. 动态调用web服务 --WSHelper.cs

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net;us ...

  9. 序列化和反序列化,异步调用web/wcf/函数

    //xml序列化 public static string Seria(DataSet ds) { XmlSerializer serializer = new XmlSerializer(typeo ...

随机推荐

  1. Input.GetMouseButtonDown 在fixedupdate中会出现丢失问题,在update中则完全没这个问题

    Input.GetMouseButtonDown 在fixedupdate中会出现丢失问题,在update中则完全没这个问题

  2. 13、OpenCV实现图像的空间滤波——图像平滑

    1.空间滤波基础概念 1.空间滤波基础 空间滤波一词中滤波取自数字信号处理,指接受或拒绝一定的频率成分,但是空间滤波学习内容实际上和通过傅里叶变换实现的频域的滤波是等效的,故而也称为滤波.空间滤波主要 ...

  3. Java基础:类文件结构及类加载

    Class文件结构 魔数 4bits 确定该文件是否是可接受的Class文件(0xCAFEBABE) 版本号 4bits 包括次版本号和主版本号 常量池 包括字面量(文本字符串,声明为final的常量 ...

  4. 【网络开发】winsock组播

    https://my.oschina.net/lopo/blog/260685 //客户端 #include <winsock2.h> #include <stdio.h> # ...

  5. windows强大的快捷键

    1 电脑锁屏 有些时候,需要暂时离开座位去处理其他事,可是电脑还有数据再跑. 关掉的话,数据就白跑了,不关的话,又不想让别人看到我电脑的资料. 那么就按住windows键后,再按L键. 这样电脑就直接 ...

  6. 任务调度之Quartz.Net配置文件

    前面介绍的任务的创建执行是通过代码来实现的,当要添加一个任务的时候就非常的不灵活,做不到热插拔.而通过配置文件的方式实现配置化,可以做到在添加一个任务的话,我们可以新建一个类库来定义Job做到热插拔. ...

  7. Asp.Net Core Identity中基于角色授权

    我们已经在之前介绍了简单的授权是在Controller或Action上添加属性Authorize来实现,那角色授权是在指定Authorize的同时指定Roles参数. 我们来看看基于角色访问的三种方式 ...

  8. Wine 总结

    下诉描述有些问题,我用非root用户安装的软件有些也会安装到root用户的家目录里不知道为什么:[我知道了,貌似用了sudo的安装的都是在root目录里..] 经过测试,最好用root权限安装,否则会 ...

  9. DRF+Vue项目(一)——项目架构

    永久配置安装源 为了加速模块的下载 1.文件管理器文件路径地址栏敲:%APPDATA% 回车,快速进入 C:\Users\电脑用户\AppData\Roaming 文件夹中 2.新建 pip 文件夹并 ...

  10. jquery滚动到顶部

    <script> $.fn.scrollTo = function (options) { var defaults = { toT: , //滚动目标位置 durTime: , //过渡 ...