webserver【实时查询当天的天气情况】
1、webserver是什么?
日常生活中经常会使用到webserver,注册时,会收到验证码,购买东西时,会收到短信,假如,A公司网站和B公司合作,那么A公司注册对的用户可以直接推送给B网站,那怎么做到的呢?是直接把数据库信息给它吗?
当然不是,这种做法这样安全吗?一般A网站会提供一个webserver接口给B网站调用。
那到底webserver是什么,webserver就是用于不同的系统数据通讯用的。
2.那我们如何使用webserver呢?
2.1 创建webserver
项目-右键-添加新建项-选择web服务
之后,运行,点击helloWorld进来之后,复制这个地址
2.2 调用webserver
2.2.1引用-添加服务引用-高级-添加web引用[刚才复制的地址,粘贴在这]-添加引用
2.2.2 然后新建一个web窗体 .cs里实例化一个对象,调用它的方法
1 protected void Page_Load(object sender, EventArgs e)
2 {
3 //1.创建一个webservices对象
4 localhost.WebService1 ws = new localhost.WebService1();
5 Response.Write(ws.HelloWorld());
6 }
浏览器中查看调用结果:
But:以上两个公司进行接口调用,存在不安全因素,接口公共,不安全,那我们这时候要怎么避免这个问题呢?
解决办法:我们可以在A公司提供加密的接口,然后把这个对接的密码只告诉B公司,如果,它密码正确,就让它调用接口,如果密码不正确,就拒绝访问。[.asmx.cs]

1 namespace baidu20160707
2 {
3 //1.1写一个类,到时候通过类去调用它的方法,如果传进来的密码相同,就让它访问,如果不同,就拒绝给它访问
4 public class MySoapHeader:SoapHeader
5 {
6 public string pwd { get; set; }
7 public bool check(string pwd)
8 {
9 if (pwd == "123456")
10 {
11 return true;
12 }
13 else
14 {
15 return false;
16 }
17 }
18 }
19 /// <summary>
20 /// WebService1 的摘要说明
21 /// </summary>
22 [WebService(Namespace = "http://tempuri.org/")]
23 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
24 [System.ComponentModel.ToolboxItem(false)]
25 // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
26 // [System.Web.Script.Services.ScriptService]
27 public class WebService1 : System.Web.Services.WebService
28 {
29 //1.2实例化对象,通过对象调用它的方法
30 public MySoapHeader header;
31 [WebMethod]
32 //1.3通过MySoapHeader里的一个header方法做验证
33 [SoapHeader("header")]
34 public string HelloWorld()
35 {
36 //1.4
37 if (header.check(header.pwd))
38 {
39 return "Hello World";
40 }
41 else
42 {
43 return "你没有权限调用";
44 }
45 }
46 }
47 }

.cs

1 protected void Page_Load(object sender, EventArgs e)
2 {
3 //1.创建一个webservices对象
4 localhost.WebService1 ws = new localhost.WebService1();
5 //创建一个mysoapheader的对象
6 localhost.MySoapHeader header = new localhost.MySoapHeader();
7 header.pwd = "123456";
8 ws.MySoapHeaderValue = header;
9 //2.通过对象去调用方法
10 Response.Write(ws.HelloWorld());
11 }

运行结果:
3.那下面,我们就要来做这么一个效果啦:
3.1.首先跟上面一样,添加服务引用-高级-添加web引用-把http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?这个接口地址复制在上面,添加引用
3.2、新建一个web窗体,html代码

1 <body>
2 <form id="form1" runat="server">
3 <div>
4 <asp:Label ID="Label1" runat="server" Text="城市:"></asp:Label>
5 <asp:TextBox ID="TxtgetWeatherbyCityName" runat="server"></asp:TextBox>
6 <asp:Button ID="Button1" runat="server" Text="查询天气" OnClick="Button1_Click" />
7 </div>
8 <div id="d1"><%=sweatherHtml%></div>
9 </form>
10 </body>

后台页面.cs 注意:[使用StringBuilder要引入命名空间using System.Text;]

1 protected void Page_Load(object sender, EventArgs e)
2 {
3
4 }
5 //4.写一个字符串绑定到前端
6 public string sweatherHtml = "";
7 protected void Button1_Click(object sender, EventArgs e)
8 {
9 //1.创建一个对象
10 cn.com.webxml.www.WeatherWebService ws = new cn.com.webxml.www.WeatherWebService();
11 //3.得到文本框里面的内容
12 string txtCity = TxtgetWeatherbyCityName.Text;
13 //2.调用它的getweatherByCityName方法,因为返回的是一个字符串数组,所以要定义一个字符串数组变量接收它
14 string [] aWeather= ws.getWeatherbyCityName(txtCity);
15 //5.写一个字符串拼凑,得到一个表格
16 StringBuilder sb = new StringBuilder();
17 sb.Append("<table>");
18 sb.Append(string.Format("<tr><td>地区:</td><td>{0}</td>",aWeather[0].ToString()));
19 sb.Append(string.Format("<tr><td>城市:</td><td>{0}</td>", aWeather[1].ToString()));
20 sb.Append(string.Format("<tr><td>时间:</td><td>{0}</td>", aWeather[4].ToString()));
21 sb.Append(string.Format("<tr><td>气温:</td><td>{0}</td>", aWeather[5].ToString()));
22 sb.Append(string.Format("<tr><td>天气:</td><td>{0}</td>", aWeather[6].ToString()));
23 if (aWeather[8].ToString() == aWeather[9].ToString())
24 {
25 sb.Append(string.Format(@"<tr><td>天气</td><td><img src=""weather/a_{0}"" /></td></tr>", aWeather[8].ToString()));
26 }
27 else
28 {
29 sb.Append(string.Format(@"<tr><td>天气</td><td><img src=""weather/a_{0}""/>转<img src=""weather/a_{1}""/></td></tr>",aWeather[8].ToString(),aWeather[9].ToString()));
30 }
31 sb.Append(string.Format("<tr><td>今日天气实况:</td><td>{0}</td>",aWeather[10].ToString()));
32 sb.Append(string.Format("<tr><td>提示:</td><td>{0}</td>", aWeather[11].ToString()));
33 sb.Append("</table>");
34 sweatherHtml = sb.ToString();
35 }
36 }

运行结果就是以上效果图的结果,另外css样式你可以根据喜好自己设置。
webserver【实时查询当天的天气情况】的更多相关文章
- webserver[实时查询当天的天气情况]
1.webserver是什么? 日常生活中经常会使用到webserver,注册时,会收到验证码,购买东西时,会收到短信,假如,A公司网站和B公司合作,那么A公司注册对的用户可以直接推送给B网站,那怎么 ...
- webService获取电话号归属地和获取天气情况步骤,及创建属于自己的webservice
一.什么是Web服务 Web服务是一种可以用来解决跨网络应用集成问题的开发模式,目的是保证不同平台的应用服务可以互操作 二.Web服务的三个核心 Soap: SOAP(Simple Object Ac ...
- 爬虫-通过本地IP地址从中国天气网爬取当前城市天气情况
1.问题描述 最近在做一个pyqt登录校园网的小项目,想在窗口的状态栏加上当天的天气情况,用爬虫可以很好的解决我的问题. 2.解决思路 考虑到所处位置的不同,需要先获取本地城市地址,然后作为中 ...
- 实时查询引擎 - Facebook Presto 介绍与应用
1. Presto 是什么 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...
- Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统
转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...
- 一步一步跟我学习lucene(19)---lucene增量更新和NRT(near-real-time)Query近实时查询
这两天加班,不能兼顾博客的更新.请大家见谅. 有时候我们创建完索引之后,数据源可能有更新的内容.而我们又想像数据库那样能直接体如今查询中.这里就是我们所说的增量索引.对于这种需求我们怎么来实现呢?lu ...
- PB级数据实时查询,滴滴Elasticsearch多集群架构实践
PB级数据实时查询,滴滴Elasticsearch多集群架构实践 mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达 点 ...
- python获取当前天气情况
利用 Python 从互联网公开服务中获取天气预报信息.天气信息来源网站:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx实现以下 ...
- SQL Server2016 新功能实时查询统计信息
SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...
随机推荐
- rgmanager 介绍
版本: rgmanager-2.0.52-14.el6.x86_64 服务: /etc/init.d/rgmanager 配置文件: /etc/cluster/cluster.conf 日志文件: 相 ...
- 关于python浮点数的精度问题。
若想严格按照四舍五入进行,可使用Decimal,代码如下: from decimal import Decimal, ROUND_HALF_UP def round(x, n): return Dec ...
- hdu 5108(数论-整数分解)
Alexandra and Prime Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (J ...
- Nginx虚拟主机(Virtual Host)配置
虚拟主机(Virtual Host)可以在一台服务器上绑定多个域名,架设多个不同的网站,一般在开发机或者要部署多个小网站的服务器上需要配置虚拟主机.nginx的虚拟主机配置其实也挺简单,为了使得配置文 ...
- (2)C语言 基础2
一.函数 二.指针 1.指针是一个用来存储内存地址的变量. int * p ; 定义了一个指针变量p,p中存储的是一个地址,改地址里必定会存储一个int类型的数据. *号表示变量p是一个指针.*和指针 ...
- Java里如何判断一个String是空字符串或空格组成的字符串
要判读String是否为空字符串,比较简单,只要判断该String的length是否为0就可以,或者直接用方法isEmpty()来判断. 但很多时候我们也会把由一些不可见的字符组成的String也 ...
- MySQL命令show full processlist
processlist命令的输出结果显示了有哪些线程在运行,可以检查当前数据库的运行状态,两种方式使用这个命令. 1 进入MySQL/bin目录下输入mysqladmin processlist; 2 ...
- 【译】PHP之道(PHP the right way)
刚入门的同学觉得自己能用PHP写出各种程序就很NB了,但其实作为一个专业程序员,你得有个全面点的知识结构.单元测试总得听过,文档工具总得用用,Xss总得会防.推荐大家把<PHP the righ ...
- 非常老的话题 SQLSERVER连接池
原文:非常老的话题 SQLSERVER连接池 非常老的话题 SQLSERVER连接池 写这篇文章不是说要炒冷饭,因为园子里有非常非常多关于SQLSERVER连接池的文章,但是他们说的都是引用MSDN里 ...
- win10 创建安卓模拟器及启动的方法
一打开 安卓 studio 然后点击AVD manager 创建一个模拟器 二 通过命令行快速启动模拟器 D:\Android\sdk\tools\emulator.exe -netdelay non ...