javaweb获取ip地址_IP接口

Java (3) 2024-07-25 14:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
javaweb获取ip地址_IP接口,希望能够帮助你!!!。

本方法利用淘宝IP地址库实现,简单易用,不需读取文件,随意随用

工具类下载地址如下:

http://download.csdn.net/detail/yjqyyjw/

工具类+测试方法源码如下:

package com.gfan.yyq.yyqs.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import org.json.JSONObject; public class AddressUtils { /** * @param args */ public static void main(String[] args) { AddressUtils addressUtils = new AddressUtils(); String ip = "118.213.176.78"; String address = ""; try { address = addressUtils.getAddress("ip=" + ip, "utf-8"); } catch (Exception e) { e.printStackTrace(); } System.out.println(address); } /** * 获取地址 * * @param params * @param encoding * @return * @throws Exception */ public String getAddress(String params, String encoding) throws Exception { String path = "http://ip.taobao.com/service/getIpInfo.php"; String returnStr = this.getRs(path, params, encoding); JSONObject json = null; if (returnStr != null) { json = new JSONObject(returnStr); if ("0".equals(json.get("code").toString())) { StringBuffer buffer = new StringBuffer(); // buffer.append(decodeUnicode(json.optJSONObject("data").getString("country")));//国家 // buffer.append(decodeUnicode(json.optJSONObject("data").getString("area")));//地区 buffer.append(decodeUnicode(json.optJSONObject("data") .getString("region")));// 省份 buffer.append(decodeUnicode(json.optJSONObject("data") .getString("city")));// 市区 buffer.append(decodeUnicode(json.optJSONObject("data") .getString("county")));// 地区 buffer.append(decodeUnicode(json.optJSONObject("data") .getString("isp")));// ISP公司 System.out.println(buffer.toString()); return buffer.toString(); } else { return "获取地址失败�?"; } } return null; } /** * 从url获取结果 * * @param path * @param params * @param encoding * @return */ public String getRs(String path, String params, String encoding) { URL url = null; HttpURLConnection connection = null; try { url = new URL(path); connection = (HttpURLConnection) url.openConnection();// 新建连接实例 connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫S? connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫S? connection.setDoInput(true);// 是否打开输出S? true|false connection.setDoOutput(true);// 是否打开输入流true|false connection.setRequestMethod("POST");// 提交方法POST|GET connection.setUseCaches(false);// 是否缓存true|false connection.connect();// 打开连接端口 DataOutputStream out = new DataOutputStream( connection.getOutputStream()); out.writeBytes(params); out.flush(); out.close(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), encoding)); StringBuffer buffer = new StringBuffer(); String line = ""; while ((line = reader.readLine()) != null) { buffer.append(line); } reader.close(); return buffer.toString(); } catch (Exception e) { e.printStackTrace(); } finally { connection.disconnect();// 关闭连接 } return null; } /** * 字符转码 * * @param theString * @return */ public static String decodeUnicode(String theString) { char aChar; int len = theString.length(); StringBuffer buffer = new StringBuffer(len); for (int i = 0; i < len;) { aChar = theString.charAt(i++); if (aChar == '\\') { aChar = theString.charAt(i++); if (aChar == 'u') { int val = 0; for (int j = 0; j < 4; j++) { aChar = theString.charAt(i++); switch (aChar) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': val = (val << 4) + aChar - '0'; break; case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': val = (val << 4) + 10 + aChar - 'a'; break; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': val = (val << 4) + 10 + aChar - 'A'; break; default: throw new IllegalArgumentException( "Malformed encoding."); } } buffer.append((char) val); } else { if (aChar == 't') { aChar = '\t'; } if (aChar == 'r') { aChar = '\r'; } if (aChar == 'n') { aChar = '\n'; } if (aChar == 'f') { aChar = '\f'; } buffer.append(aChar); } } else { buffer.append(aChar); } } return buffer.toString(); } } 

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复