手机号码归属地API

今天无聊做了一个小例子,关于手机号码归属地的。源代码地址:常用API 其实说白了,就是调用开放的API接口,只是大家知道的API地址不多罢了。 今天就整合了下。 我测试了下,感觉最好用的算是“有道api接口”,可以返回xml或是json数据。非常方便。淘宝的api可能是为了安全起见,API会返回你自己的IP地址,总感觉是不是我每次调用淘宝的API,淘宝就记录下我的IP地址啊。所以还是不建议大家使用。 淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手机号码 返回:JSON 拍拍 API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback 参数: mobile:手机号码 callname:回调函数 amount:未知(必须) 返回:JSON 财付通 API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443 参数: chgmobile:手机号码 返回:xml 百付宝 API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443 参数: phone:手机号码 callback:回调函数 cmd:未知(必须) 返回:JSON 115 API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443 参数: mobile:手机号码 callback:回调函数 返回:JSON 有道api接口 接口地址:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13892101112 参数说明: type : 参数手机归属地固定为mobile q : 手机号码 返回XML格式: 13892101112 陕西 延安 或者 http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=手机号码 返回JSON格式: fYodaoCallBack(1, {‘product’:'mobile’,'phonenum’:’13892101112′,’location’:'陕西 延安’} , ”); 096.me api接口 查询手机号码归属地: http://www.096.me/api.php?phone=手机号&mode={txt,xml} 举例:http://www.096.me/api.php?phone=13892101111&mode=txt 返回: 13892101111||陕西延安移动全球通卡 ||吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶|| 举例:http://www.096.me/api.php?phone=13892101111&mode=xml 返回: 13892101111 陕西延安移动全球通卡 吉凶参半,惟赖勇气,贯彻力行,始可成功 吉带凶 下面贴代码: [code lang="csharp"] /// /// 电话号码搜索 /// /// /// private void btnSearch_Click(object sender, EventArgs e) { string tel = txtTel.Text.Trim();//电话号码 CookieContainer cookieContrainer = new CookieContainer(); //模拟http的post请求,请求数据 string result = CommonLib.HttpRequestHelper.SendDataByPost("http://www.youdao.com/smartresult-xml/search.s", "type=mobile&q=" + tel,Encoding.GetEncoding("gb2312"),Encoding.GetEncoding("gb2312"), ref cookieContrainer); //将返回的xml转换成对象 CommonModel.TelModel telModel = CommonLib.MyObjectXml.XMLToObject(result, Encoding.GetEncoding("gb2312")); //电话号码归属地 lblLocation.Text=telModel.Products.Location; } [/code] 关于模拟http请求的方法,可以参考我的 “长链接转短链接的方法”一文 关于xml的序列化和反序列化。有比较方便实用的类库,如需代码,可查看该类库源代码。 [code lang="csharp"] <pre>    public class MyObjectXml     {         #region Serialize         /// <summary>         /// 将object对象序列化成XML         /// </summary>         /// <param name="o"></param>         /// <returns></returns>         public static string ObjectToXML(object o)         {             XmlSerializer ser = new XmlSerializer(o.GetType());             MemoryStream mem = new MemoryStream();             XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);             ser.Serialize(writer, o);             writer.Close();             return Encoding.Default.GetString(mem.ToArray());         }         /// <summary>         /// 将xml反序列化成对象         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="source"></param>         /// <returns></returns>         public static T XMLToObject<T>(string source)         {             return XMLToObject<T>(source, Encoding.UTF8);         }         /// <summary>         /// 将xml反序列化成对象         /// </summary>         /// <typeparam name="T"></typeparam>         /// <param name="source"></param>         /// <param name="encoding"></param>         /// <returns></returns>         public static T XMLToObject<T>(string source, Encoding encoding)         {             XmlSerializer mySerializer = new XmlSerializer(typeof(T));             using (MemoryStream stream = new MemoryStream(encoding.GetBytes(source)))             {                 return (T)mySerializer.Deserialize(stream);             }         }         #endregion     }</pre> [/code] 好了,源代码就讲到这里,如果有不会的,可以点击该链接地址,下载源代码。 https://skydrive.live.com/redir?resid=DE4D708F3045FF90!5043
posted @ 2013-03-17 23:57  keepnode  阅读(626)  评论(0编辑  收藏  举报