首页 > 代码库 > JAVA解析淘宝IP地址库

JAVA解析淘宝IP地址库

服务器地址:

http://ip.taobao.com/instructions.php

 

 

需 JSON jar包

  1 import java.io.BufferedReader;  2 import java.io.DataOutputStream;  3 import java.io.InputStreamReader;  4 import java.net.HttpURLConnection;  5 import java.net.URL;  6   7 import org.json.JSONObject;  8   9  10 /* 11 import org.json.JSONObject; */ 12  13 public class AddressUtils { 14  15     /** 16      * 获取地址 17      * @param params 18      * @param encoding 19      * @return 20      * @throws Exception 21      */ 22     public String getAddress(String params, String encoding) throws Exception{ 23          24         String path = "http://ip.taobao.com/service/getIpInfo.php"; 25          26         String returnStr = this.getRs(path, params, encoding); 27          28         JSONObject json=null; 29          30         if(returnStr != null){ 31              32             json = new JSONObject(returnStr); 33              34             if("0".equals(json.get("code").toString())){ 35                  36                 StringBuffer buffer = new StringBuffer(); 37                  38                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("country")));//国家 39                  40                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("area")));//地区 41                  42                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("region")));//省份 43                  44                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("city")));//市区 45                  46                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("county")));//地区 47                  48                 buffer.append(decodeUnicode(json.optJSONObject("data").getString("isp")));//ISP公司 49                  50                 //System.out.println(buffer.toString()); 51                  52                 return buffer.toString(); 53                  54             }else{ 55                  56                 return "获取地址失败"; 57                  58             } 59              60         } 61     return null; 62          63     } 64     /** 65      * 从url获取结果 66      * @param path 67      * @param params 68      * @param encoding 69      * @return 70      */ 71     public String getRs(String path, String params, String encoding){ 72          73         URL url = null; 74          75         HttpURLConnection connection = null; 76              77         try { 78              79             url = new URL(path); 80                  81             connection = (HttpURLConnection)url.openConnection();// 新建连接实例 82                  83             connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒 84              85             connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒 86              87             connection.setDoInput(true);// 是否打开输出流 true|false 88              89             connection.setDoOutput(true);// 是否打开输入流true|false 90              91             connection.setRequestMethod("POST");// 提交方法POST|GET 92              93             connection.setUseCaches(false);// 是否缓存true|false 94              95             connection.connect();// 打开连接端口 96              97             DataOutputStream out = new DataOutputStream(connection.getOutputStream()); 98              99             out.writeBytes(params);100             101             out.flush();102             103             out.close();104             105             106             BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),encoding));107             108             StringBuffer buffer = new StringBuffer();109             110             String line = "";111             112             while ((line = reader.readLine())!= null) {113                 114                 buffer.append(line);115                 116             }117             118             reader.close();119             120             return buffer.toString();121             122         } catch (Exception e) {123             124             e.printStackTrace();125             126         }finally{127             128             connection.disconnect();// 关闭连接129             130         }131         132         return null;133     }134     /**135      * 字符转码136      * @param theString137      * @return138      */139     public static String decodeUnicode(String theString){140         141         char aChar;142         143         int len = theString.length();144         145         StringBuffer buffer = new StringBuffer(len);146         147         for (int i = 0; i < len;) {148             149             aChar = theString.charAt(i++);150             151             if(aChar == ‘\\‘){152                 153                 aChar = theString.charAt(i++);154             155                 if(aChar == ‘u‘){156                     157                     int val = 0;158                     159                     for(int j = 0; j < 4; j++){160                         161                         aChar = theString.charAt(i++);162                         163                         switch (aChar) {164                         165                         case ‘0‘:case ‘1‘:case ‘2‘:case ‘3‘:    166                         case ‘4‘:case ‘5‘:167                             168                         case ‘6‘:169                         170                         case ‘7‘:171                             172                         case ‘8‘:173                             174                         case ‘9‘:175                             176                         val = (val << 4) + aChar - ‘0‘;177                         178                         break;179     180                         case ‘a‘:181                             182                         case ‘b‘:183                             184                         case ‘c‘:185                             186                         case ‘d‘:187                             188                         case ‘e‘:189                             190                         case ‘f‘:191                             192                         val = (val << 4) + 10 + aChar - ‘a‘;193                                194                         break;195                         196                         case ‘A‘:197                             198                         case ‘B‘:199                             200                         case ‘C‘:201                             202                         case ‘D‘:203                             204                         case ‘E‘:205                             206                         case ‘F‘:207                           208                         val = (val << 4) + 10 + aChar - ‘A‘;209                                210                         break;211                                212                         default:213                         214                         throw new IllegalArgumentException(215                              216                             "Malformed      encoding.");217                         }218                         219                     }220                     221                     buffer.append((char) val);222                     223                     }else{224                         225                         if(aChar == ‘t‘){226                             227                             aChar = ‘\t‘;228                         }229                         230                         if(aChar == ‘r‘){231                             232                             aChar = ‘\r‘;233                         }234                         235                         if(aChar == ‘n‘){236                             237                             aChar = ‘\n‘;238                         }239                         240                         if(aChar == ‘f‘){241                             242                             aChar = ‘\f‘;243                             244                         }245                         246                         buffer.append(aChar);247                     }248                 249                 }else{250                     251                     buffer.append(aChar);252                     253                 }254                 255             }256         257         return buffer.toString();258         259     }260 261     /**测试262      * @param args263      */264     public static void main(String[] args) {265         266         AddressUtils addressUtils = new AddressUtils();267         268           String ip = "180.112.173.164";269           270           String address = "";271           272           try {273               274            address = addressUtils.getAddress("ip="+ip, "utf-8");275            276           } catch (Exception e) {277               278               e.printStackTrace();279           }280           281          System.out.println(address);282           283 284     }285 }

 

 

JAVA解析淘宝IP地址库