JAVA IP工具類

jopen 11年前發布 | 33K 次閱讀 IPUtil Java開發

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;

import javax.servlet.http.HttpServletRequest;

import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject;

/**

  • IP工具類
  • */ public class IpUtil {

    /**

    • 獲取登錄用戶的IP地址
    • @param request
    • @return */ public static String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

       ip = request.getHeader("Proxy-Client-IP");
      

      } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

       ip = request.getHeader("WL-Proxy-Client-IP");
      

      } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {

       ip = request.getRemoteAddr();
      

      } if (ip.equals("0:0:0:0:0:0:0:1")) {

       ip = "本地";
      

      } if (ip.split(",").length > 1) {

       ip = ip.split(",")[0];
      

      } return ip; }

      /**

    • 通過IP獲取地址(需要聯網,調用淘寶的IP庫)
    • @param ip
    • @return */ public static String getIpInfo(String ip) { if (ip.equals("本地")) {

       ip = "127.0.0.1";
      

      } String info = ""; try {

       URL url = new URL("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
       HttpURLConnection htpcon = (HttpURLConnection) url.openConnection();
       htpcon.setRequestMethod("GET");
       htpcon.setDoOutput(true);
       htpcon.setDoInput(true);
       htpcon.setUseCaches(false);
      
       InputStream in = htpcon.getInputStream();
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
       StringBuffer temp = new StringBuffer();
       String line = bufferedReader.readLine();
       while (line != null) {
           temp.append(line).append("\r\n");
           line = bufferedReader.readLine();
       }
       bufferedReader.close();
       JSONObject obj = (JSONObject) JSON.parse(temp.toString());
       if (obj.getIntValue("code") == 0) {
           JSONObject data = obj.getJSONObject("data");
           info += data.getString("country") + " ";
           info += data.getString("region") + " ";
           info += data.getString("city") + " ";
           info += data.getString("isp");
       }
      

      } catch (MalformedURLException e) {

       e.printStackTrace();
      

      } catch (ProtocolException e) {

       e.printStackTrace();
      

      } catch (IOException e) {

       e.printStackTrace();
      

      } return info; }

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!