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服务的更多相关文章

  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. 【Luogu P3258】[JLOI2014]松鼠的新家

    Luogu P3258 题意就是对于一棵树,要求按照给出的顺序对每一个节点进行访问,记录每一个节点被经过的次数:特别地,我们认为只有从一个节点往外走才能被认为是经过一次.(最后一句话非常重要,仔细理解 ...

  2. String类的构造函数,析构函数、拷贝构造函数和赋值函数

    (1)构造函数 String::String(const char *str) { if(str==NULL) { m_data = new char[1]; *m_data = ‘\0’; } el ...

  3. Python数据挖掘之随机森林

    主要是使用随机森林将four列缺失的数据补齐. # fit到RandomForestRegressor之中,n_estimators代表随机森林中的决策树数量 #n_jobs这个参数告诉引擎有多少处理 ...

  4. WCF-方法重载

    一.服务端重载 一般写法直接重载,但是会报错,如下. [ServiceContract] public interface IService1 { [OperationContract] string ...

  5. CH09 开机自动烧录QSPI

    版本信息: 版本 REV2018 时间 05/22/2018       XILINX ZYNQ LINUX篇 基于米联MZ7X系列                       电子版自学资料   常 ...

  6. Luogu5285 [十二省联考2019] 骗分过样例

    题目分析: 观察前3个点,$361=19*19$,所以可以发现实际上就是快速幂,然后模数猜测是$998244353$,因为功能编号里面有这个数字,用费马小定理处理一下. $pts:12$ 观察第4个点 ...

  7. elk docker-compose

    version: '3.1' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.2.4 c ...

  8. 在我的电脑中删除wps云文档图标

    在我的电脑中删除wps云文档图标 右键点击win10左下角选择运行,输入regedit打开注册表后,找到以下注册表路径: HKEY_CURRENT_USER\Software\Microsoft\Wi ...

  9. css 基础入门

    CSS 概述 为了让网页元素的样式更加丰富,也为了让网页的内容和样式能拆分开,css 由此而生,css 是 Cascading Style Sheets 的字母缩写,意思是层叠样式表,有了 css,h ...

  10. HTML5页面介绍

    1.<!DOCTYPE html>     文档声明:用于告诉浏览器使用html哪个版本的标准解析页面,此写法代表使用html5的标准去解析 2.<html>     根标签, ...