zoukankan      html  css  js  c++  java
  • 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样式你可以根据喜好自己设置。

  • 相关阅读:
    走下神坛的内存调试器
    mysql在高内存、IO利用率上的几个优化点 (sync+fsync) 猎豹移动技术博客
    跃趣科技
    java 类型转换:
    ab ApacheBench web测试工具
    使用EPEL和REMI第三方yum源
    “too many open files" ----增大打开的文件数
    Tcpdump命令行 与 GUI Wireshark
    gcc -I -L -l区别
    rsyslog 报 WARNING: rsyslogd is running in compatibility mode.
  • 原文地址:https://www.cnblogs.com/zzp0320/p/7927655.html
Copyright © 2011-2022 走看看