博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

使用Locating 系统查询手机号码归属地

Posted on 2010-03-09 21:36  BradyChen  阅读(2591)  评论(0编辑  收藏  举报

为了方便您将这个功能集成在自己的网站或桌面程序中,我们提供了多种调用方式。您可以根据自己的实际情况,任选其一;您不必经过我们的允许即可随意使用,如果不能满足您的需求请与我们联系

  1. 通过 WebService 调用获取数据
  2. 通过 HTTP Post/Get 获取 XML 格式的数据
  3. 通过 HTTP Post/Get 获取 JSON 格式的数据
  4. 通过 HTTP Post/Get 获取普通文本格式数据
  5. 通过 form 或 iframe 标签插入 Web 页面
  6. 通过 JavaScript 和 HTML 标签插入 Web 页面

注:
1. 各接口对应的手机号码参数,可以识别大多数的手机号码格式,全角半角均可,例如:139、1391234、13912345678、0139-1234-5678 等。
2. Web 页面的 URL 中表示手机号码的参数 m,除了支持上述格式外,还支持以下编码的 URI 格式:UTF-8,ANSI(GB2312 / GBK / GB13000 / GB18030),Unicode。例如,可以通过以下地址获取 137 的 xml 格式归属信息:
  http://api.showji.com/locating/?m=%ef%bc%91%ef%bc%93%ef%bc%97&output=xml
  (%ef%bc%91%ef%bc%93%ef%bc%97 是“137”的 UTF-8 编码的 URI 格式)


通过 WebService 调用获取数据

Web Service 地址:http://api.showji.com/locating/Mobile.asmx

只含有一个对象:Mobile。其成员如下:

获取手机号码归属地信息

函数原型:

bool Query(string Mobile, out string Province, out string City, out string AreaCode, out string PostCode, out string Corp, 
out string Card);

参数:

Mobile: 待查询的手机号码。
Province: 返回手机号码归属地的省份。
City: 返回手机号码归属地的城市。
AreaCode: 返回手机号码归属地的区号。
PostCode: 返回手机号码归属地的邮编。
Corp: 返回所属运营商。
Card: 返回所属卡类型。

返回值:

返回 bool 值,表示用户输入的号码是否可识别。

获取当前服务状态

函数原型:

bool GetStatus();

返回值:

返回 bool 值,表示当前服务是否可用。

备注:

没有必要每次查询前都检查服务的可用状态。即便服务不可用,执行 Query 也不会遇到错误,只是返回 false 而已。

示例程序下载(需要 C#.net 2008 环境) (12k)

通过 HTTP Post/Get 获取 XML / JSON / 普通文本 格式的数据

获取手机号码归属地信息

调用地址:

http://api.showji.com/locating/

url 参数:

m: 手机号码;
output: 输出格式。可选 xml、json、text,分别对应 XLM、JSON、普通文本 格式;
callback: 回调函数名称(可选)。仅当 output=json 时有效。
          回调函数的名称只能包括以下字符:英文(A-Z,a-z),数字(0-9),点(.),下划线(_),方括号([,])。

返回数据的格式:

返回的 XML 格式(http://api.showji.com/locating/?m=13903111234&output=xml):

<?xml version="1.0" encoding="utf-8" ?>
<QueryResponse xmlns="http://api.showj.com/Locating/">
	<Mobile>13903111234</Mobile>
	<QueryResult>True</QueryResult>
	<Province>河北</Province>
	<City>石家庄</City>
	<AreaCode>0311</AreaCode>
	<PostCode>050000</PostCode>
	<Corp>中国移动</Corp>
	<Card>GSM</Card>
</QueryResponse>

返回的 JSON 格式(http://api.showji.com/locating/?m=13903111234&output=json):

{"Mobile":"13903111234",
 "QueryResult":"True",
 "Province":"河北",
 "City":"石家庄",
 "AreaCode":"0311",
 "PostCode":"050000",
 "Corp":"中国移动",
 "Card":"GSM"}

返回带有回调函数的 JSON 格式(http://api.showji.com/locating/?m=13903111234&output=json&callback=querycallback):

querycallback({"Mobile":"13903111234",
	 "QueryResult":"True",
	 "Province":"河北",
	 "City":"石家庄",
	 "AreaCode":"0311",
	 "PostCode":"050000",
	 "Corp":"中国移动",
	 "Card":"GSM"})

返回 普通文本 格式(http://api.showji.com/locating/?m=13903111234&output=text):

Mobile:13903111234
QueryResult:True
Province:河北
City:石家庄
AreaCode:0311
PostCode:050000
Corp:中国移动
Card:GSM

调用范例:

带有回调函数的 JSON 调用范例请参见 获取当前服务状态 部分。
其他调用范例省略。

获取当前服务状态

调用地址:

http://api.showji.com/locating/Status.aspx

url 参数:

output: 输出格式。可选 xml、json、text,分别对应 XML、JSON、普通文本 格式。
callback: 回调函数名称(可选)。仅当 output=json 时有效。
          回调函数的名称只能包括以下字符:英文(A-Z,a-z),数字(0-9),点(.),下划线(_),方括号([,])。

返回数据的格式:

返回的 XML 格式(http://api.showji.com/locating/Status.aspx?output=xml):

<?xml version="1.0" encoding="utf-8" ?>
<QueryResponse xmlns="http://api.showji.com/Locating/">
	<Status>True</Status>
</QueryResponse>

返回的 JSON 格式(http://api.showji.com/locating/Status.aspx?output=json):

{"Status":"True"}

返回带有回调函数的 JSON 格式(http://api.showji.com/locating/Status.aspx?output=json&callback=querycallback):

querycallback({"Status":"True"})

返回 普通文本 格式(http://api.showji.com/locating/Status.aspx?output=text):

Status:True

调用范例:

以下示范如何在 html 页面中使用 JavaScript 获取的 Json 数据:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head></head>
<body>
	<p>当前服务状态:<span id="Status">检测中……</span></p>

	<script type="text/javascript">
	function querycallback(obj)
	{
		if (obj["Status"] == "True")
			s = "正常。";
		else
			s = "服务不可用。";

		document.getElementById("Status").innerText = s;
	}
	</script>
	<script type="text/javascript" src="http://api.showji.com/locating/Status.aspx?output=json&callback=querycallback"></script>
</body>
</html>

通过 form 或 iframe 标签插入 Web 页面

任选以下代码插入到您的网页中,就可以为您的网页提供查询手机号码归属地的功能(您可先修改部分代码,再运行):

1. 基于 form 形式(打开完整页面)

这种形式占用页面的空间小,查询的时候会打开新窗口。代码如下:


  

2. 基于 form 形式(打开小窗口)

这种形式占用页面的空间小,查询的时候会打开新窗口。代码如下:


  

3. 基于 iframe 形式

这种形式可以不打开新窗口,所有查询都在一个页面内,只是占用的页面空间比较大。代码如下:


4. 基于 超链接 形式

http://api.showji.com/Locating/query.aspx?m=13900008888

通过 JavaScript 脚本和 HTML 标签插入 Web 页面

这种方式可以实现样式的任意定制,客户端仅需要包含一个 JavaScript 脚本和显示结果的 HTML 代码即可。并且,定制的页面支持来自 GET 方式的提交,从而本地可以定制多种查询情况。以下范例中红色标出的部分,请不要随意修改。

页面 part1.htm,实现完整的查询页面:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form onsubmit="return query();">
	请输入手机号码:<input id="m" size="15" maxlength="15" />
	<input type="Submit" value="查询" id="btnQuery" />
</form>
<div id="panelError" style="display:none;height:100%;text-align:center">
	<span id="txtError" style="color:red">您输入的手机号码有误</span>
</div>
<div id="panelResult" style="display:none">
	手机号码:<span id="txtMobile"></span><br/>
	所属省份:<span id="txtProvince"></span><br/>
	所属城市:<span id="txtCity"></span><br/>
	区  号:<span id="txtAreaCode"></span><br/>
	邮  编:<span id="txtPostCode"></span><br/>
	类  型:<span id="txtCard"></span><br/>
</div>
<div id="panelNotice" style="display:none; height:100%"></div>
<script type="text/javascript" src="http://api.showji.com/Locating/Query.js"></script>
</body>
</html>

页面 part2.htm,简单的查询文本框,可提交查询至 part1.htm(如果要修改文件名,请确保其一致)。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
	<form name="formLocating" action="part1.htm" method="GET">
		<input type="text" name="m" value="请输入手机号码" onclick=this.value="" />
		<input type="submit" />
	</form>
</body>
</html>

页面 part2.htm 如果使用 POST 方式提交,必须满足以下条件:part1.htm 必须经服务器端脚本解析。例如使用 part1.asp 取代 part1.htm。同时,必须在引用 Query.js 前,增加如下代码:

<script type="text/javascript">
strMobile=“<%=Request("m")%>”;
</script>