三沣开发知识 购物 网址 游戏 小说 歌词 地图 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题
autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml
html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> C# -> 通过手机号定位归属地 -> 正文阅读
 

[C#]通过手机号定位归属地

通过手机号定位归属地   工作中,很多地方,都存在只知道手机号,同时也想知道这个手机号的归属地的情况。
  本功能,即可实现这个要求。同时,可在此基础上做调整,实现其它功能,如制作一个属于自己的手机号段归属库等。。。
  实现思路:通过网上提供的免费查询接口,取得返回信息,并对返回信息进行解析处理,获取自己需要的数据。
  使用控件:LitJson.dll (LitJson.dll下载  或到网上搜索)
  代码如下:

        /// <summary>  
        /// 获取url的返回值  
        /// </summary>  
        /// <param name="url">eg:http://m.weather.com.cn/atad/101010100.html </param>  
        private string RequestGetInfo(string url)
        {
            string strBuff = "";
            Uri httpURL = new Uri(url);
            // HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换   
            HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
            // 通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换   
            HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
            // GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容   
            // 若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理   
            Stream respStream = httpResp.GetResponseStream();
            // 返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以   
            // StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8)   
            StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);
            strBuff = respStreamReader.ReadToEnd();
            return strBuff;
        }

  调用代码:

            string txtPhone = this.txtMobile.Text; // 输入的手机号码
            string url = "http://v.showji.com/Locating/showji.com2016234999234.aspx?output=json&callback=querycallback&timestamp=" + GetNowTimestamp() + "&m=" + txtPhone;

            string get = RequestGetInfo(url);
            get = get.Substring(get.IndexOf('{'));
            get = get.Substring(0, get.IndexOf('}') + 1);
            JsonData jd = JsonMapper.ToObject(get);

            string result = jd["QueryResult"].ToString();
            string city = jd["City"].ToString(); // 归属城市
            MessageBox.Show(get);

  其中:GetNowTimestamp()取的时间戳,以保证值不同。

        private string GetNowTimestamp()
        {
            TimeSpan span = DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
            return span.TotalSeconds.ToString();
        }

  
  如输入手机号:13800138000(实际上只需要手机号的前7位即可),get值返回字符串: "{"Mobile":"13800138000","QueryResult":"True","TO":"中国移动","Corp":"中国移动","Province":"北京","City":"北京","AreaCode":"010","PostCode":"100000","VNO":"","Card":""}。
  Mobile为手机号(段)
  QueryResult为查询结果,=True表示查询成功。=False为查询失败。
  Corp为号码所属公司
  Province为所属省份
  City为所属城市
  AreadCode为所在地的电话区号
  PostCode为所在地邮编
  其它信息未知。
   
  顺带说一下使用LitJson使用过程中的问题,就是它将JSON对象转换成字符串时,会将中文自动转成Unicode编码,保存到文件上时,看起不够直观。所以,提供一个Unicode与正常字符串之间的转码处理函数:

        /// <summary>  
        /// <summary>  
        /// 字符串转Unicode  
        /// </summary>  
        /// <param name="source">源字符串</param>  
        /// <returns>Unicode编码后的字符串</returns>  
        public static string String2Unicode(string source)
        {
            byte[] bytes = Encoding.Unicode.GetBytes(source);
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = 0; i < bytes.Length; i += 2)
            {
                stringBuilder.AppendFormat("\\u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0'));
            }
            return stringBuilder.ToString();
        }

        /// <summary>  
        /// Unicode转字符串  
        /// </summary>  
        /// <param name="source">经过Unicode编码的字符串</param>  
        /// <returns>正常字符串</returns>  
        public static string Unicode2String(string source)
        {
            return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(
                         source, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16)));
        }  

  调用:

// configFile为文件名
// jdNew为JSON对象
// jdNew.ToJson()将JSON对象转成字符串
File.WriteAllText(configFile, Unicode2String( jdNew.ToJson()));

  
  以上代码,均为网上获取,同时也分享给大家,希望对大家有用。
  各位可发挥自己的想象力,在此基础上,做出自己需要的东西了。
  C# 最新文章
字符串阵列分别输出元素的索引,原值和长度
格式化你的字符串
C#宣告一个变量
C#中级
拆分一个字符串并把每个字符单独输出
通过手机号定位归属地
C# 在引用插件中 出现的问题| Csharp cite
汽车租赁系统
C#中结构体定义并转换字节数组
小知识(五):抽象类&接口
上一篇文章           查看所有文章
加:2017-12-08 23:22:03  更:2017-12-08 23:22:28 
 
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年4日历
2018-4-24 1:21:47
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库