获取手机号码归属地
通過webservices接口獲取手機號碼歸屬地:
引用webservices地址:
http://api.showji.com/locating/Mobile.asmx主要代碼:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Windows.Forms; using System.Xml;namespace MobileAttribution {public partial class Form1 : Form{//Html網頁代碼private string htmlCode = string.Empty;//運營商private string corp = string.Empty;//卡類型private string card = string.Empty;ServiceMobile.MobileSoapClient mc = new ServiceMobile.MobileSoapClient();public Form1(){InitializeComponent();}/// <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>/// 抓取網頁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>/// 傳入URL返回網頁的html代碼/// 這個方法在這里沒有用到/// </summary>/// <param name="Url">URL</param>/// <returns></returns>public string GetUrltoHtml(string Url){StringBuilder content = new StringBuilder();try{// 與指定URL創建HTTP請求HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);request.KeepAlive = false;// 獲取對應HTTP請求的響應HttpWebResponse response = (HttpWebResponse)request.GetResponse();// 獲取響應流Stream responseStream = response.GetResponseStream();// 對接響應流(以"GBK"字符集)StreamReader sReader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));// 開始讀取數據Char[] sReaderBuffer = new Char[256];int count = sReader.Read(sReaderBuffer, 0, 256);while (count > 0){String tempStr = new String(sReaderBuffer, 0, count);content.Append(tempStr);count = sReader.Read(sReaderBuffer, 0, 256);}// 讀取結束sReader.Close();}catch (Exception){content = new StringBuilder("Runtime Error");}return content.ToString();}/// <summary>/// 符合下列規則也可使用/// 返回xml/// 需要順序的節點:/// QueryResult(查詢結果狀態True,False)/// Province(所屬省份)/// City(所屬地區)/// Corp(服務商)/// Card(卡類型 GSM)/// AreaCode(區號)/// PostCode(郵編)/// </summary>/// <param name="url"></param>/// <param name="mobileNum"></param>/// <returns></returns>public static string GetInfoByxml(string url, string mobileNum){string str = "";try{XmlDocument xml = new XmlDocument();// xml.LoadXml("<?xml version='1.0' encoding='utf-8' ?><QueryResponse xmlns='http://api.showji.com/Locating'><Mobile>15890636739</Mobile><QueryResult>True</QueryResult><Province>河南</Province><City>鄭州</City><AreaCode>0371</AreaCode><PostCode>450000</PostCode><Corp>中國移動</Corp><Card>GSM</Card></QueryResponse>");xml.Load(string.Format(url, mobileNum));XmlNamespaceManager xmlNm = new XmlNamespaceManager(xml.NameTable);xmlNm.AddNamespace("content", "http://api.showji.com/locating");XmlNodeList nodes = xml.SelectNodes("//content:QueryResult|//content:Mobile|//content:Province|//content:City|//content:Corp|//content:Card|//content:AreaCode|//content:PostCode", xmlNm);if (nodes.Count == 8){if ("True".Equals(nodes[1].InnerText)){str=nodes[0].InnerText+","+ nodes[2].InnerText +","+ nodes[3].InnerText+","+nodes[6].InnerText +","+nodes[7].InnerText+","+ nodes[4].InnerText+","+ nodes[5].InnerText ;}}return str.ToString();}catch{return str.ToString();}}/// <summary>/// 查詢號碼歸屬地/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void btnQuery_Click(object sender, EventArgs e){ServiceMobile.MobileSoapClient mc = new ServiceMobile.MobileSoapClient();string Mobile = txtmob.Text.Trim().ToString();string Province = null;string City = null;string AreaCode = null;string PostCode = null;string Corp = null;string Card = null;if (string.IsNullOrEmpty(txtmob.Text)){MessageBox.Show("請輸入號碼!", "錯誤提示", MessageBoxButtons.OK, MessageBoxIcon.Information);return;}else{bool result = mc.Query(Mobile, out Province, out City, out AreaCode, out PostCode, out Corp, out Card);if (result == true){txtMobile.Text = Mobile;txtProvince.Text = Province;txtCity.Text = City;txtAreaCode.Text = AreaCode;txtPostCode.Text = PostCode;txtCopy.Text = Corp;txtCard.Text = Card;richTextBox1.AppendText("Mobile:" + Mobile + "\r\n" + "Province:" + Province + "\r\n" + "City:" + City + "\r\n" + "AreaCode:" + AreaCode + "\r\n" + "PostCode:" + PostCode + "\r\n" + "Corp:" + Corp + "\r\n" + "Card:" + Card + "\r\n");MessageBox.Show("查詢成功!");}else if (result == false){MessageBox.Show("查詢失敗 服務器返回超時!");}}//string str = GetInfoByxml("http://api.showji.com/Locating/? m={0}", txtm.Text.Trim());//string[] array = str.Split(',');//foreach (string item in array)//{// richTextBox1.Text += "__" + item;//}//if (txtm.Text.Trim().ToString() != "")//{// //抓取網頁html代碼// htmlCode = GetStringByUrl("http://api.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);//}}///返回 bool 值,表示用戶輸入的號碼是否可識別。/// <summary>/// 查詢手機號所屬地方法/// </summary>/// <param name="Mobile">查詢的手機號碼</param>/// <param name="Province">返回手機號碼歸屬地的省份</param>/// <param name="City">返回手機號碼歸屬地的城市</param>/// <param name="AreaCode">返回手機號碼歸屬地的區號</param>/// <param name="PostCode">返回手機號碼歸屬地的郵編</param>/// <param name="Corp">返回所屬運營商</param>/// <param name="Card">返回所屬卡類型</param>/// <returns></returns>private bool Query(string Mobile, out string Province, out string City, out string AreaCode, out string PostCode, out string Corp, out string Card){bool result = mc.Query(Mobile, out Province, out City, out AreaCode, out PostCode, out Corp, out Card);return result;}} }?
轉載于:https://www.cnblogs.com/Warmsunshine/p/3780002.html
總結
- 上一篇: 了解php面向对象
- 下一篇: 求数组中的最小值以及最小值的序列号