最近作項目的時候、要用到這個功能!html
在網上找了不少、若是根據網絡提供的API直接JS Ajax查詢會出問題:拒絕訪問 java
網上說是跨域了、解決辦法就是java後臺訪問這個API地址。下面羅列一些網絡上的API地址。json
API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443
參數:跨域
API地址: http://virtual.paipai.com/extinfo/GetMobileProductInfo?mobile=15850781443&amount=10000&callname=getPhoneNumInfoExtCallback
參數:網絡
API地址: http://life.tenpay.com/cgi-bin/mobile/MobileQueryAttribution.cgi?chgmobile=15850781443
參數:ide
API地址: https://www.baifubao.com/callback?cmd=1059&callback=phone&phone=15850781443
參數:函數
API地址: http://cz.115.com/?ct=index&ac=get_mobile_local&callback=jsonp1333962541001&mobile=15850781443
參數:測試
API地址: http://www.youdao.com/smartresult-xml/search.s?jsFlag=true&type=mobile&q=13985046628
參數:jsonp
我用的是有道的API、下面是代碼:url
頁面代碼:
- function findPhoneAddres(){
- var mobile = $("#usermobil").val();
- var urlAction = "<%=path %>/customermanage/listcustomerinfo!findPhoneAddres.action";
- $.get(urlAction, {phoneStr:mobile}, function (data){
- if(data==''||data==null){
- alertMsg.info("找不到您輸入的手機號碼歸屬地!");
- }else{
- var json = eval("("+data+")");
- var phoneStr = json.location ;
- $("#userAddres").val(phoneStr.split(" ")[1]);
- $("#userAddresByPhone").val(phoneStr.split(" ")[1]);
- $("#userAddresLabel").html("手機號歸屬地:"+phoneStr.split(" ")[1])
- }
- });
- }
後臺Action方法:
- /*
- * 手機號碼歸屬地查詢地址
- */
- private final String urlAddres = "http://www.youdao.com/smartresult-xml/search.s?" +
- "jsFlag=true&type=mobile&q=";
- /**
- * 查詢手機號碼歸屬地
- * @return
- * @throws Exception
- */
- public String findPhoneAddres() throws Exception{
- String phone = request.getParameter("phoneStr");
- String url = urlAddres+phone;
- String result = ActionURL.callUrlByGet(url, "GBK");
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html;charset=UTF-8");
- PrintWriter out = response.getWriter();
- out.print(result);
- out.close();
- return null;
- }
ActionURL靜態類的callUrlByGet方法:
- public static String callUrlByGet(String callurl,String charset){
- String result = "";
- try {
- URL url = new URL(callurl);
- URLConnection connection = url.openConnection();
- connection.connect();
- BufferedReader reader = new BufferedReader(new
- InputStreamReader(connection.getInputStream(),charset));
- String line;
- while((line = reader.readLine())!= null){
- result += line;
- result += "\n";
- }
- } catch (Exception e) {
- e.printStackTrace();
- return "";
- }
- if(result!=null&&!"".equals(result)){
- result = result.substring(result.indexOf("{" +
- ""), (result.indexOf("}")+1) );
- }
- return result;
- }
Test測試方法:
- public static void main(String[] args) {
- String url = "http://www.youdao.com/smartresult-xml/search.s?" +
- "jsFlag=true&type=mobile&q=13985046628";
- String result = callUrlByGet(url,"GBK");
- System.out.println(result);
- }
輸出的結果:
{'product':'mobile','phonenum':'13985046628','location':'貴州 貴陽'}