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 ????????????else14 ????????????{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.WebService28 ????{29 ????????//1.2实例化对象,通过对象调用它的方法30 ????????public ?MySoapHeader header;31 ????????[WebMethod]32 ????????//1.3通过MySoapHeader里的一个header方法做验证33 ????????[SoapHeader("header")]34 ????????public string HelloWorld()35 ????????{36 ????????????//1.437 ????????????if (header.check(header.pwd))38 ????????????{39 ????????????????return "Hello World";40 ????????????}41 ????????????else42 ????????????{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 ???????????else28 ???????????{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【实时查询当天的天气情况】
原文地址:http://www.cnblogs.com/zzp0320/p/7927655.html