Ajax 查询手机号码归属地

最近做项目的时候、要用到这个功能!

在网上找了很多、如果根据网络提供的API直接JS Ajax查询会出问题:拒绝访问

网上说是跨域了、解决办法就是java后台访问这个API地址。下面罗列一些网络上的API地址。

淘宝网

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?jsFlag=true&type=mobile&q=13985046628
参数:

  • type:mobile(表示查询手机号码)
  • q:手机号码
  • 返回:JSON

我用的是有道的API、下面是代码:

页面代码:

  
  
  
  
  1. function findPhoneAddres(){   
  2.                    var mobile = $("#usermobil").val();     
  3.                    var urlAction = "<%=path %>/customermanage/listcustomerinfo!findPhoneAddres.action";   
  4.                    $.get(urlAction, {phoneStr:mobile}, function (data){   
  5.                         if(data==''||data==null){   
  6.                             alertMsg.info("找不到您输入的手机号码归属地!");       
  7.                         }else{   
  8.                             var json = eval("("+data+")");       
  9.                             var phoneStr = json.location ;   
  10.                             $("#userAddres").val(phoneStr.split(" ")[1]);    
  11.                             $("#userAddresByPhone").val(phoneStr.split(" ")[1]);       
  12.                             $("#userAddresLabel").html("手机号归属地:"+phoneStr.split(" ")[1])   
  13.                         }     
  14.                     });        

后台Action方法:

  
  
  
  
  1.  /*  
  2.  * 手机号码归属地查询地址  
  3.  */   
  4. private final String urlAddres = "http://www.youdao.com/smartresult-xml/search.s?" +   
  5.                                  "jsFlag=true&type=mobile&q=";   
  6.   /**  
  7.  * 查询手机号码归属地  
  8.  * @return  
  9.  * @throws Exception  
  10.  */   
  11. public String findPhoneAddres() throws Exception{   
  12.     String phone = request.getParameter("phoneStr");   
  13.     String url = urlAddres+phone;       
  14.     String result = ActionURL.callUrlByGet(url, "GBK");     
  15.     request.setCharacterEncoding("UTF-8");   
  16.     response.setContentType("text/html;charset=UTF-8");   
  17.     PrintWriter out = response.getWriter();     
  18.     out.print(result);     
  19.     out.close();        
  20.     return null;   
  21. }   

ActionURL静态类的callUrlByGet方法:

  
  
  
  
  1. public static String callUrlByGet(String callurl,String charset){     
  2.         String result = "";     
  3.         try {     
  4.             URL url = new URL(callurl);     
  5.             URLConnection connection = url.openConnection();     
  6.             connection.connect();     
  7.             BufferedReader reader = new BufferedReader(new    
  8.                     InputStreamReader(connection.getInputStream(),charset));     
  9.             String line;     
  10.             while((line = reader.readLine())!= null){      
  11.                 result += line;     
  12.                 result += "\n";     
  13.             }     
  14.         } catch (Exception e) {     
  15.             e.printStackTrace();     
  16.             return "";     
  17.         }     
  18.         if(result!=null&&!"".equals(result)){   
  19.             result = result.substring(result.indexOf("{" +   
  20.             ""), (result.indexOf("}")+1) );     
  21.         }    
  22.         return result;       
  23.     }   

Test测试方法:

  
  
  
  
  1. public static void main(String[] args) {   
  2.         String url = "http://www.youdao.com/smartresult-xml/search.s?" +   
  3.                      "jsFlag=true&type=mobile&q=13985046628";   
  4.         String result = callUrlByGet(url,"GBK");   
  5.         System.out.println(result);      
  6.     }   

输出的结果:

{'product':'mobile','phonenum':'13985046628','location':'贵州 贵阳'}

你可能感兴趣的:(Ajax,手机号码归属地查询)