通过手机号定位归属地,手机号定位归属

2019-11-06 07:48 来源:未知

通过手机号定位归属地,手机号定位归属

  工作中,很多地方,都存在只知道手机号,同时也想知道这个手机号的归属地的情况。

  本功能,即可实现这个要求。同时,可在此基础上做调整,实现其它功能,如制作一个属于自己的手机号段归属库等。。。

  实现思路:通过网上提供的免费查询接口,取得返回信息,并对返回信息进行解析处理,获取自己需要的数据。

  使用控件: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()));

  

  以上代码,均为网上获取,同时也分享给大家,希望对大家有用。

 

  各位可发挥自己的想象力,在此基础上,做出自己需要的东西了。

 

http://www.bkjia.com/C_jc/1235741.htmlwww.bkjia.comtruehttp://www.bkjia.com/C_jc/1235741.htmlTechArticle通过手机号定位归属地,手机号定位归属 工作中,很多地方,都存在只知道手机号,同时也想知道这个手机号的归属地的情况。 本功能,...

TAG标签:
版权声明:本文由美洲杯赌球发布于计算机教程,转载请注明出处:通过手机号定位归属地,手机号定位归属