无论是智能机也好,功能机也好,都是没有直接的接口获取手机号码的。那如何获取手机的手机号码呢?以下是两种可行的方案,如果你有更好的方法,欢迎大家交流
【方法一】
通过访问移动梦网的如下接口: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.wbmpAcceptCharset: ISO-8859-1, US-ASCII, UTF-8; Q=0.8, ISO-10646-UCS-2; Q=0.6AcceptLanguage: zh-cn,zh;q=0.5KeepAlive: 115Connection: keep-aliveReferer: http://wap.monternet.com/test/getHeader.jspUserAgent: nokiaN73/4.0839.42.3.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1Url: http://wap.monternet.com/test/getHeader.jspContentType: text/xmlMethod : post
移动梦网会返回的一个XML,如下所示,x-up-calling-line-id这个字段后面的就是本机的手机号码了。
Host=wap.monternet.com
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.wbmpAccept-Charset=ISO-8859-1, US-ASCII, UTF-8; Q=0.8, ISO-10646-UCS-2; Q=0.6Accept-Language=zh-cn,zh;q=0.5Keep-Alive=115Referer=http://wap.monternet.com/test/getHeader.jspContent-Type=text/xmlx-up-bear-type=GPRS/EDGEx-source-id=10.200.0.1User-Agent=nokiaN73/4.0839.42.3.1 Series60/3.0 Profile/MIDP-2.0 Configuration/CLDC-1.1x-wap-profile=x-forwarded-for=10.200.159.34x-up-calling-line-id=861521743XXXXContent-Length=1Via=ZXWAP GateWay,ZTE TechnologiesConnection=Keep-AliveWL-Proxy-SSL=falseX-WebLogic-Force-JVMID=-1926249542WL-Proxy-Client-IP=211.136.222.90Proxy-Client-IP=10.200.159.34X-WebLogic-Request-ClusterInfo=true
当然这种方式也不见的完全可靠,我测试的几个都是可以的。
【方法二】
智能机也好,功能机也好,获取imsi的接口都还是有的,而且手机号码和imsi都是唯一对应的。这样可以在应用启动的时候让用户发送注册短信,短信内容为imsi,服务器接收到短信,这样就能获取imsi和对应的手机号码,将键值对保存到数据库中,以后只需根据imsi到数据库中查找号码即可。