C# Winform实现手机号码归属地查询工具

您所在的位置:网站首页 怎么查旺旺号的归属地 C# Winform实现手机号码归属地查询工具

C# Winform实现手机号码归属地查询工具

2024-06-01 04:16| 来源: 网络整理| 查看: 265

摘要:本文介绍使用C#开发基于Winform的手机号码归属地查询工具,并提供详细的示例代码供参考。 一、需求描述

输入正确的手机号码,查询该号码的归属地和其他相关信息。

二、需求分析 1、实现手机号码归属地查询的方法

01、本地数据库存储信息,查询本地库

02、调用WebService查询

03、通过Http请求Get方式从服务器上获取数据

2、方式分析:

01、采用本地数据库存储,可以断网查询,无需付费,但信息量较大占用本地资源

02、调用WebService必须连接网络,不占用本地资源,但公开的WebService大多数需要付费。

03、通过Http请求Get方式从服务器上获取数据的方式必须连接网络,不占用本地资源,无需付费。

通过以上分析,决定采用第3种方式实现

三、实现思路

寻找免费的手机号码归属地查询网址

通过一番寻找和对比,决定使用“手机号码归属地数据库API”这个网站上的查询接口。

首页地址:http://vip.showji.com/locating/help.htm

查询地址(返回结果页面):http://api.showji.com/Locating/query.aspx?m=手机号码

查询地址(返回xml数据):http://vip.showji.com/locating/?m=手机号码

通过跟踪调试网站的JS代码,发现返回结果页面是使用$("txtMobile").innerHTML=obj["Mobile"];的方式赋值的,这样的话页面是有值的,但查看源代码发现结果为空,所以无法通过抓取网页源码来提取结果值。

经过分析和反复试验发现,查询结果可以直接发回xml格式的数据,哈哈,亲,要的就是你。

有了xml数据就好办了,通过抓取网页Html代码,用一个string变量存储xml格式的数据,然后通过分析xml数据得到手机号码归属地信息。

四、实现方法(代码) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net; using System.IO; using System.Xml; namespace QueryLocating { public partial class formQueryLocating : Form { //Html网页代码 private string htmlCode = string.Empty; //运营商 private string corp = string.Empty; //手机卡类型 private string card = string.Empty; public formQueryLocating() { InitializeComponent(); } /// /// 查询 /// /// /// private void btnQuery_Click(object sender, EventArgs e) { if (txtm.Text.Trim().ToString() != "") { //抓取网页html代码 htmlCode = GetStringByUrl("http://vip.showji.com/locating/?m=" + txtm.Text.Trim().ToString()); //查询手机号码归属地 QueryLocating(htmlCode); } else { txtMobile.Text = ""; txtProvince.Text = ""; txtCity.Text = ""; txtAreaCode.Text = ""; txtPostCode.Text = ""; txtCard.Text = ""; MessageBox.Show("请输入手机号码!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } /// /// 查询手机号码归属地 /// /// 网页Html代码 private void QueryLocating(string htmlCode) { //创建Xml实例 XmlDocument xmldoc = new XmlDocument(); //加载Xml文档 xmldoc.LoadXml(htmlCode); //获取Xml文档的根元素 XmlElement root = xmldoc.DocumentElement; //获取Xml文档的根元素下的所有子节点 XmlNodeList topNode = xmldoc.DocumentElement.ChildNodes; //子节点集合 XmlNodeList elemList; //遍历根元素下所有子节点 foreach (XmlElement element in topNode) { //根据节点名称获取节点元素值 elemList = root.GetElementsByTagName(element.Name); switch (element.Name) { //判断手机号码格式是否正确 case "QueryResult": if (elemList[0].InnerText.ToString() == "False") MessageBox.Show("您输入的手机号码格式有误,请重新输入!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information); continue; //手机号码 case "Mobile": txtMobile.Text = elemList[0].InnerText; break; //所属省份 case "Province": txtProvince.Text = elemList[0].InnerText; break; //所属城市 case "City": txtCity.Text = elemList[0].InnerText; break; //区号 case "AreaCode": txtAreaCode.Text = elemList[0].InnerText; break; //邮编 case "PostCode": txtPostCode.Text = elemList[0].InnerText; break; //运营商 case "Corp": corp = elemList[0].InnerText; break; //卡类型 case "Card": card = elemList[0].InnerText; //拼接字符串(运营商+卡类型) txtCard.Text = corp + card; break; } } } /// /// 抓取网页html代码 /// /// URL /// private static string GetStringByUrl(string strUrl) { //与指定URL创建HTTP请求 WebRequest wrt = WebRequest.Create(strUrl); //获取对应HTTP请求的响应 WebResponse wrse = wrt.GetResponse(); //获取响应流 Stream strM = wrse.GetResponseStream(); //对接响应流(以"GBK"字符集) StreamReader SR = new StreamReader(strM, Encoding.GetEncoding("UTF-8")); //获取响应流的全部字符串 string strallstrm = SR.ReadToEnd(); //关闭读取流 SR.Close(); //返回网页html代码 return strallstrm; } } } 最终效果图:

源代码:https://files.cnblogs.com/jara/QueryLocating.rar

 

个人主要研究:金融系统、MIS系统、人力资源管理系统、数据采集系统、权限管理系统等等系统。主攻C#开发语言,Oracle、Sql Server,WCF和Remoting通信。 如需联系可加QQ:442389681 Email:[email protected] 手机:18922735098 QQ群交流:186841119 (请注明来自博客园) 博客园地址:http://www.cnblogs.com/jara/       http://www.cnblogs.com/luoyuhao/ 提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。如果对文章有任何问题,都可以在评论中留言,我会尽可能的答复您,谢谢您的阅读



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3