无论是智能机也好,功能机也好,都是没有直接的接口获取手机号码的。那如何获取手机的手机号码呢?以下是两种可行的方案,如果你有更好的方法,欢迎大家交流
【方法一】
通过访问移动梦网的如下接口:http://wap.monternet.com/test/getHeader.jsp
Http头配置如下,Method为GET我试了也是可以的
Accept: application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*, text/x-vcard, text/x-vcalendar, image/gif, image/vnd.wap.wbmp
AcceptCharset: ISO-8859-1, US-ASCII, UTF-8; Q=0.8, ISO-10646-UCS-2; Q=0.6
AcceptLanguage: zh-cn,zh;q=0.5
KeepAlive: 115
Connection: keep-alive
Referer: http://wap.monternet.com/test/getHeader.jsp
UserAgent: nokiaN73/4.0839.42.3.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1
Url: http://wap.monternet.com/test/getHeader.jsp
ContentType: text/xml
Method : post
移动梦网会返回的一个XML,如下所示,x-up-calling-line-id这个字段后面的就是本机的手机号码了。
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<card title="http_header">
<p>
Host=wap.monternet.com<br/>Accept=application/vnd.wap.wmlscriptc, text/vnd.wap.wml, application/vnd.wap.xhtml+xml, application/xhtml+xml, text/html, multipart/mixed, */*, text/x-vcard, text/x-vcalendar, image/gif, image/vnd.wap.wbmp<br/>Accept-Charset=ISO-8859-1, US-ASCII, UTF-8; Q=0.8, ISO-10646-UCS-2; Q=0.6<br/>Accept-Language=zh-cn,zh;q=0.5<br/>Keep-Alive=115<br/>Referer=http://wap.monternet.com/test/getHeader.jsp<br/>Content-Type=text/xml<br/>x-up-bear-type=GPRS/EDGE<br/>x-source-id=10.200.0.1<br/>User-Agent=nokiaN73/4.0839.42.3.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1<br/>x-wap-profile=<br/>x-forwarded-for=10.200.159.34<br/>x-up-calling-line-id=861521743XXXX<br/>Content-Length=1<br/>Via=ZXWAP GateWay,ZTE Technologies<br/>Connection=Keep-Alive<br/>WL-Proxy-SSL=false<br/>X-WebLogic-Force-JVMID=-1926249542<br/>WL-Proxy-Client-IP=211.136.222.90<br/>Proxy-Client-IP=10.200.159.34<br/>X-WebLogic-Request-ClusterInfo=true<br/>
</p>
</card>
</wml>
当然这种方式也不见的完全可靠,我测试的几个都是可以的。
【方法二】
智能机也好,功能机也好,获取imsi的接口都还是有的,而且手机号码和imsi都是唯一对应的。这样可以在应用启动的时候让用户发送注册短信,短信内容为imsi,服务器接收到短信,这样就能获取imsi和对应的手机号码,将键值对保存到数据库中,以后只需根据imsi到数据库中查找号码即可。