首页 > 代码库 > 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地址库
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。