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里实例化一个对象,调用它的方法

 protected void Page_Load(object sender, EventArgs e)
{
//1.创建一个webservices对象
localhost.WebService1 ws = new localhost.WebService1();
Response.Write(ws.HelloWorld());
}

浏览器中查看调用结果:

But:以上两个公司进行接口调用,存在不安全因素,接口公共,不安全,那我们这时候要怎么避免这个问题呢?

解决办法:我们可以在A公司提供加密的接口,然后把这个对接的密码只告诉B公司,如果,它密码正确,就让它调用接口,如果密码不正确,就拒绝访问。[.asmx.cs]

 namespace baidu20160707
{
//1.1写一个类,到时候通过类去调用它的方法,如果传进来的密码相同,就让它访问,如果不同,就拒绝给它访问
public class MySoapHeader:SoapHeader
{
public string pwd { get; set; }
public bool check(string pwd)
{
if (pwd == "")
{
return true;
}
else
{
return false;
}
}
}
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{
//1.2实例化对象,通过对象调用它的方法
public MySoapHeader header;
[WebMethod]
//1.3通过MySoapHeader里的一个header方法做验证
[SoapHeader("header")]
public string HelloWorld()
{
//1.4
if (header.check(header.pwd))
{
return "Hello World";
}
else
{
return "你没有权限调用";
}
}
}
}

.cs

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

运行结果:

       

3.那下面,我们就要来做这么一个效果啦:

3.1.首先跟上面一样,添加服务引用-高级-添加web引用-把http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?这个接口地址复制在上面,添加引用

3.2、新建一个web窗体,html代码

 <body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="城市:"></asp:Label>
<asp:TextBox ID="TxtgetWeatherbyCityName" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="查询天气" OnClick="Button1_Click" />
</div>
<div id="d1"><%=sweatherHtml%></div>
</form>
</body>

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

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

运行结果就是以上效果图的结果,另外css样式你可以根据喜好自己设置。

webserver[实时查询当天的天气情况]的更多相关文章

  1. webserver【实时查询当天的天气情况】

    1.webserver是什么? 日常生活中经常会使用到webserver,注册时,会收到验证码,购买东西时,会收到短信,假如,A公司网站和B公司合作,那么A公司注册对的用户可以直接推送给B网站,那怎么 ...

  2. webService获取电话号归属地和获取天气情况步骤,及创建属于自己的webservice

    一.什么是Web服务 Web服务是一种可以用来解决跨网络应用集成问题的开发模式,目的是保证不同平台的应用服务可以互操作 二.Web服务的三个核心 Soap: SOAP(Simple Object Ac ...

  3. 爬虫-通过本地IP地址从中国天气网爬取当前城市天气情况

    1.问题描述 ​ 最近在做一个pyqt登录校园网的小项目,想在窗口的状态栏加上当天的天气情况,用爬虫可以很好的解决我的问题. 2.解决思路 ​ 考虑到所处位置的不同,需要先获取本地城市地址,然后作为中 ...

  4. 实时查询引擎 - Facebook Presto 介绍与应用

    1. Presto 是什么   Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...

  5. Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统

    转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...

  6. 一步一步跟我学习lucene(19)---lucene增量更新和NRT(near-real-time)Query近实时查询

    这两天加班,不能兼顾博客的更新.请大家见谅. 有时候我们创建完索引之后,数据源可能有更新的内容.而我们又想像数据库那样能直接体如今查询中.这里就是我们所说的增量索引.对于这种需求我们怎么来实现呢?lu ...

  7. PB级数据实时查询,滴滴Elasticsearch多集群架构实践

    PB级数据实时查询,滴滴Elasticsearch多集群架构实践  mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达 点 ...

  8. python获取当前天气情况

    利用 Python 从互联网公开服务中获取天气预报信息.天气信息来源网站:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx实现以下 ...

  9. SQL Server2016 新功能实时查询统计信息

    SQL Server2016 新功能实时查询统计信息 很多时候有这样的场景,开发抱怨DBA没有调优好数据库,DBA抱怨开发写的程序代码差,因此,DBA和开发都成为了死对头,无法真正排查问题. DBA只 ...

随机推荐

  1. ASP.NET MVC SSO单点登录设计与实现

    实验环境配置 HOST文件配置如下: 127.0.0.1 app.com127.0.0.1 sso.com IIS配置如下: 应用程序池采用.Net Framework 4.0 注意IIS绑定的域名, ...

  2. .NET垃圾回收(GC)原理

    作为.NET进阶内容的一部分,垃圾回收器(简称GC)是必须了解的内容.本着“通俗易懂”的原则,本文将解释CLR中垃圾回收器的工作原理. 基础知识 托管堆(Managed Heap) 先来看MSDN的解 ...

  3. 企业IT管理员IE11升级指南【5】—— 不跟踪(DNT)例外

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  4. 三周,用长轮询实现Chat并迁移到Azure测试

    公司的OA从零开始进行开发,继简单的单点登陆.角色与权限.消息中间件之后,轮到在线即时通信的模块需要我独立去完成.这三周除了逛网店见爱*看动漫接兼职,基本上都花在这上面了.简单地说就是用MVC4基于长 ...

  5. 【原】安装Win7和Ubuntu双系统后,Win7耳机无声音的解决办法

    最近安装了Ubuntu的桌面版,作成了双系统,可是发现了一个问题:进入Win7后有时插耳机会没有声音,外放有声音.后来更新驱动也没有解决问题,最后在网上查到了解决办法. 产生原因:进入Ubuntu后, ...

  6. php后台增加删除修改跳转页面

    第一步 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  7. 使用Emit把Datatable转换为对象集合(List<T>)

    Emit生成动态方法部分摘自网上,但是经过修改,加入了对委托的缓存以及类结构的调整,使之调用更简洁方便.大致的思路是:要实现转换datatable到某个指定对象的集合,本质是实现转换一个datarow ...

  8. iOS-App上架流程

    前言:作为一名IOS开发者,把开发出来的App上传到App Store是必须的.下面就来详细介绍下具体流程. 1.打开苹果开发者中心:https://developer.apple.com 打开后点击 ...

  9. C# 获取当前月第一天和最后一天 计算两个日期差多少天

    获取当前月的第一天和最后一天 DateTime now = DateTime.Now; DateTime firstDay = ); DateTime lastDay = firstDay.AddMo ...

  10. Vue.js学习笔记(6)tree

    分享一段用 <ul>和<li>标签实现tree的代码,可能写的不是很好,如果大家有更好的希望和小颖分享下.嘻嘻 啦啦啦,代码看这里喽: <div class=" ...