使用C#开发基于Winform的手机号码归属地查询工具
来源:互联网 发布:知乎绝地求生炸鱼 编辑:程序博客网 时间:2024/06/05 21:13
一、需求描述
输入正确的手机号码,查询该号码的归属地和其他相关信息。
二、需求分析
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数据得到手机号码归属地信息。
四、实现方法(代码)
公共变量//Html网页代码private string htmlCode = string.Empty;//运营商private string corp = string.Empty;//手机卡类型private string card = string.Empty;抓取网页Html代码/// <summary>/// 抓取网页html代码/// </summary>/// <param name="strUrl">URL</param>/// <returns></returns>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;}查询号码归属地/// <summary>/// 查询手机号码归属地/// </summary>/// <param name="htmlCode">网页Html代码</param>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;}}}调用查询方法/// <summary>/// 查询/// </summary>/// <param name="sender"></param>/// <param name="e"></param>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);}}
最终效果图:
源码下载:http://download.csdn.net/detail/luyaoapp/4150189
- 使用C#开发基于Winform的手机号码归属地查询工具
- 黑马程序员--使用C#开发基于Winform的手机号码归属地查询工具
- 使用C#开发基于Winform的手机号码归属地查询工具
- C# 手机号码归属地查询
- 手机号码归属地查询工具的正确使用方法
- c# winfrom实现手机号码归属地查询
- c#实现手机号码归属地查询
- [017] Android平台HttpClient的使用-手机号码归属地查询
- Android平台HttpClient的使用-手机号码归属地查询
- [017] Android平台HttpClient的使用-手机号码归属地查询 .
- Android平台HttpClient的使用-手机号码归属地查询 (17)
- Android平台HttpClient的使用-手机号码归属地查询
- Android平台HttpClient的使用-手机号码归属地查询
- [017] Android平台HttpClient的使用-手机号码归属地查询
- Android平台HttpClient的使用-手机号码归属地查询
- 分享使用手机号码归属地批量查询软件的方法
- Android平台HttpClient的使用-手机号码归属地查询
- 手机号码归属地查询
- C++的tie()函数
- Turn on WCF Server Security Event Logging & Auditing
- 查看SQL2008列说明
- MicroKernel & Exokernel 操作系统未来可能的发展
- SHSH备份教程及相关知识介绍
- 使用C#开发基于Winform的手机号码归属地查询工具
- daodejing
- ofbiz 网站或店铺视觉主题(visual Theme)设计
- CSDN论坛上的一些面试题收集
- 一种基于引用计数机制的智能指针实现
- Android应用发布渠道汇总(更新中)
- Oracle深入浅出之一
- 过TP效果测试
- 解决QT开发的exe软件不能运行问题