25.C# 异步调用Web服务
1.创建Web服务
1.1VS新建ASP.Net空Web应用程序

1.2添加Web服务新建项

1.3添加GetWeather方法和相关类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.EnterpriseServices; namespace WebService
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/",Name ="WebServiceTest" ,Description ="test" ) ]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
[Description("")]
public class WebService1 : System.Web.Services.WebService
{ [WebMethod]
public string HelloWorld()
{
return "Hello World";
} [WebMethod]
public string ReverseString(string message)
{
if (message.Contains(""))
throw new Exception("不能包含1");
else
return new string( message.Reverse().ToArray());
} [WebMethod]
public GetWeatherResponse GetWeather(GetWeatherRequest req)
{
GetWeatherResponse resp = new GetWeatherResponse();
Random r =new Random();
int celsius = r.Next(-, );//返回-20到50之间的一个数
if (req.TemperatureType == TemperatureType.Celsius)
resp.Temperature = celsius;
else
resp.Temperature = ( - ) / * celsius + ;//摄氏度转换成华氏温度 if (req.City == "RedMond")
resp.TemperatureCondition = TemperatureCondition.Rainy;
else
resp.TemperatureCondition = (TemperatureCondition)r.Next(, );//随机取出一个天气 return resp;
} } public enum TemperatureType
{
Fahrenheit,//华氏温度
Celsius//摄氏度
} public class GetWeatherRequest
{
public string City { get; set; }
public TemperatureType TemperatureType { get; set; }
} /// <summary>
/// 天气情况
/// </summary>
public enum TemperatureCondition
{
Rainy,
Sunny,
Cloudy,
Thunderstorms//雷暴天气
} public class GetWeatherResponse
{
public TemperatureCondition TemperatureCondition { get; set; }
public int Temperature { get; set; }//温度
}
}
2.调用web服务
2.1新建Winfrom应用程序WebServiceSample
界面如下

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

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

2.3 在GetWeather按钮中 调用web服务,代码如下
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WebServiceSample.WebServiceTest; namespace WebServiceSample
{
public partial class GetWeatherForm : Form
{
public GetWeatherForm()
{
InitializeComponent();
} private void btnGetWeather_Click(object sender, EventArgs e)
{
GetWeatherRequest req = new GetWeatherRequest();
if(radioCelsius.Checked)
req.TemperatureType = TemperatureType.Celsius;
else
req.TemperatureType =TemperatureType.Fahrenheit ;
req.City = txtCity.Text; WebServiceTestSoapClient client = new WebServiceTestSoapClient();
client.GetWeatherCompleted += GetWeatherCompleted;
client.GetWeatherAsync(req);
} void GetWeatherCompleted(object source, GetWeatherCompletedEventArgs e)
{
if (e.Error == null)
{
txtTemperature.Text = e.Result.Temperature.ToString();
txtWeatherCondition.Text = e.Result.TemperatureCondition.ToString();
}
else
{
MessageBox.Show(e.Error.Message);
}
}
}
}
25.C# 异步调用Web服务的更多相关文章
- mvc路由引起异步调用web服务的问题
从一篇blog得知使用脚本可以异步调用Web服务,觉得很新鲜,因为自己很少用到Web服务,所以决定写一写看看什么效果. 首先在UI项目(我使用的是MVC4.0)里创建一个Web服务. 添加Web服务后 ...
- HttpClient异步调用WEB服务
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- 动态调用web服务
通常我们在程序中需要调用WebService时,都是通过“添加Web引用”,让VS.NET环境来为我们生成服务代理,然后调用对应的Web服务.这样是使工作简单了,但是却和提供Web服务的URL.方法名 ...
- Android调用Web服务
现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...
- 使用ASP.NET AJAX 从脚本中调用Web 服务的应用方法
技能点:通过编写WebService,在页面js中调用WebService来进行数据查询. 网站开发,有些时候需要使用js在页面动态生成一些内容,但还有些数据要通过查询数据库才能获取的. 但由于诸如主 ...
- 在 SQL Server 的存储过程中调用 Web 服务
介绍 一个老朋友计划开发一个应用,基于 .NET 和 Socket,但需要在存储过程中调用 Web 服务. 在这篇文章中我们将分享这个应用的经验,讲述如何在存储过程中调用 Web 服务,并传递参数. ...
- Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token
原文:Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务.WCF消息头添加安全验证Token 为什么选择wcf? 因为好像wcf和wpf就是哥俩,,, 为什么选择异步 ...
- 动态调用web服务 --WSHelper.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Net;us ...
- 序列化和反序列化,异步调用web/wcf/函数
//xml序列化 public static string Seria(DataSet ds) { XmlSerializer serializer = new XmlSerializer(typeo ...
随机推荐
- java程序cpu问题排查
方法一: 转载:http://www.linuxhot.com/java-cpu-used-high.html 1.jps 获取Java进程的PID. 2.jstack pid >> ja ...
- 【GStreamer开发】GStreamer基础教程11——调试工具
目标 有时我们的应用并没有按照我们的预期来工作,并且在总线上获得的错误信息也没有足够的内容.这时我们该怎么办呢?幸运的时,GStreamer自身提供了大量的调试信息,通常这些信息会给出一些线索,指向出 ...
- WXS --注释
- Flask 数据库连接
Flask拥有丰富的扩展组件,数据库管理方面Flask-SQLAlchemy简化了数据库管理的操作.SQLAlchemy是一个很强大的关系型数据库框架,支持多种数据库后台.其不但提供了高层ORM,而且 ...
- 《ucore lab2》实验报告
资源 ucore在线实验指导书 我的ucore实验代码 练习1:实现 first-fit 连续物理内存分配算法 题目 在实现first fit 内存分配算法的回收函数时,要考虑地址连续的空闲块之间的合 ...
- 017 Android 获取手机SIM卡序列号和读取联系人
1.获取手机SIM卡序列号 //5.存储sim卡系列号 //5.1获取sim卡系列号 TelephonyManager manager = (TelephonyManager) getSystemSe ...
- 数组模拟循环队列(java实现)
1.front变量的含义:front就指向队列的第一个元素,也就是说arr[front]就是队列的第一个元素front的初始值=0. 2.rear变量的含义:rear指向队列的最后一个元素的后一个位置 ...
- 计算机网络--TCP协议深入理解
在近期学习计算机网络的过程中,由于知识点过于零散,琐碎,从而学习起来痛苦不堪,此贴只是总结了基于传输层的TCP协议相关的知识细节,并加入一点自己的理解,并无创新,若有理解不当之处,敬请提出,感谢! 首 ...
- PB笔记之调用数据窗口时的过滤条件添加方式
在PB查询数据窗口的数据时 通常可以有两种方式 一是在数据窗口事先写好查询条件,然后用retrieve()函数通过参数传递给数据窗口 这种方式适合查询条件较为简单,条件数较少的数据窗口 二是使用Set ...
- 编译 Linux 内核 时出现 Restart config 问题
scripts/kconfig/conf --silentoldconfig Kconfig * * Restart config... * * * Enable the block layer * ...