• atlas学习实践系列之三(远程web services调用)


    上篇地址:atlas学习实践系列之二(AutoCompleteExtender篇)
    atlas调用本地web services那是相当的简单,调用远程的也不难,看了dflying chen的几篇文章也学了不少内容,尤其是yahoo天气预报的例子更是受益匪浅。自己动手实践一把。
    目标:实现IP地址查询功能.输入IP地址,获得该IP所在的国家和城市。
    难点:1)如何设置调用远程服务的asbx文件(有关配置支持asbx的方法可以见dflying chen 的介绍)
    难点2):如何动态获得请求的客户端IP,然后在js中使用。
    首先,建立一个网络服务,用于查询IP,IP地址信息库是一个mdb文件,相关代码为:

    注意,该web services必须支持HTTP-Get方式访问,故需要如下web.config配置

    <system.web>
        
    <webServices>
          
    <protocols>
            
    <add name="HttpPost"/>
            
    <add name="HttpGet"/>
          
    </protocols>
        
    </webServices>
    </system.web>

    网络服务建好了,下面就是调用了。
    建立一个新的网站,首先建立一个IPServices.asbx文件,该文件是将远程服务映射到本地的配置文件,有关信息见dflying chen的文章。文件内容如下:

    asbx配置文件

    调用页面为:

    页面前台

    因为javscript不容易获得本机IP地址,故在后台注册了脚本,解决第二个难点问题 :后台代码

     1using System;
     2using System.Data;
     3using System.Configuration;
     4using System.Web;
     5using System.Web.Security;
     6using System.Web.UI;
     7using System.Web.UI.WebControls;
     8using System.Web.UI.WebControls.WebParts;
     9using System.Web.UI.HtmlControls;
    10using System.Text;
    11
    12public partial class _Default : System.Web.UI.Page 
    13{
    14    protected void Page_Load(object sender, EventArgs e)
    15    {
    16        StringBuilder sb = new StringBuilder();
    17        string ip = Request.UserHostAddress;
    18        sb.Append("<script language=\"javascript\" type=\"text/javascript\">");
    19        sb.Append(" function getIpAddress(){var ip='"+ip+"';n2dog.IpServices.GetIPAddress({'ip':ip},onGetCompleted);}");
    20        sb.Append("</script>");
    21        string script = sb.ToString();        
    22        Page.RegisterClientScriptBlock("IpServices", script);
    23
    24    }

    25}

    这样目标即可实现,效果图:
    上篇地址:atlas学习实践系列之二(AutoCompleteExtender篇)
    再次感谢dflying chen的系列文章对我的启发和指导。

  • 相关阅读:
    Docker容器彻底删除所有容器、删除所有镜像、删除所有卷、删除所有网络
    Fabric区块链浏览器启动报错Error : [ 'Explorer is closing due to channel name [%s] is already exist in DB'...]
    查看docker里面的Postgres数据库里面的信息
    将本地镜像推送到指定docker服务器
    linux 下 配置C++ 开发环境
    Go 发送邮件
    Ubuntu下使用nginx发布vue项目
    C++多线程之条件变量
    C/C++ 递归
    STL容器概述
  • 原文地址:https://www.cnblogs.com/jillzhang/p/483020.html
Copyright © 2020-2023  润新知