手机号码归属地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
写个博客不容易,请转载的时候备注下原文出处,谢谢
作者:keepnode
博客地址:http://www.cnblogs.com/woaic
每件事到最后都是好事,如果不是好事,说明还没有到最后
=========================
作者:keepnode
博客地址:http://www.cnblogs.com/woaic
每件事到最后都是好事,如果不是好事,说明还没有到最后
=========================