mitao
2025-05-20 179c4d64313c9b7572778da4aaaf6c6584fe457d
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/IPUtil.java
@@ -1,114 +1,112 @@
package com.panzhihua.common.utlis;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import javax.servlet.http.HttpServletRequest;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.servlet.http.HttpServletRequest;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
/**
 * @ClassName: IPUtil
 * @version 1.0
 * @Desc: Ip工具类
 * @author huaping hu
 * @version 1.0
 * @ClassName: IPUtil
 * @Desc: Ip工具类
 * @date 2016年6月1日下午5:26:56
 * @history v1.0
 *
 */
@Slf4j
public class IPUtil {
    /**
     *
     * 描述:获取IP地址
     * @author huaping hu
     * @date 2016年6月1日下午5:25:44
     *
     * @param request
     * @return
     * @author huaping hu
     * @date 2016年6月1日下午5:25:44
     */
    public static String getIpAddress(HttpServletRequest request){
    public static String getIpAddress(HttpServletRequest request) {
        if (request == null) {
            return "unknown";
        }
        String ip = request.getHeader("x-forwarded-for");
        if(ip == null || ip.length() ==0 || "nuknown".equalsIgnoreCase(ip)){
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if(ip == null || ip.length() ==0 || "nuknown".equalsIgnoreCase(ip)){
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if(ip == null || ip.length() ==0 || "nuknown".equalsIgnoreCase(ip)){
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
        return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip;
    }
    /**
     *
     * 描述:获取IP+[IP所属地址]
     * @author huaping hu
     * @date 2016年6月1日下午6:01:09
     *
     * @param request
     * @return
     * @author huaping hu
     * @date 2016年6月1日下午6:01:09
     */
    public static String getIpBelongAddress(HttpServletRequest request){
    public static String getIpBelongAddress(HttpServletRequest request) {
        String ip = getIpAddress(request);
        String belongIp = getIPbelongAddress(ip);
        return ip + belongIp;
    }
    /**
     *
     * 描述:获取IP所属地址
     * @author huaping hu
     * @date 2016年6月1日下午5:59:43
     *
     * @param ip
     * @return
     * @author huaping hu
     * @date 2016年6月1日下午5:59:43
     */
    public static String getIPbelongAddress(String ip){
    public static String getIPbelongAddress(String ip) {
        String ipAddress = "[]";
        try{
//淘宝提供的服务地址
            String context = call("http://ip.taobao.com/service/getIpInfo.php?ip="+ip);
        try {
            // 淘宝提供的服务地址
            String context = call("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
            JSONObject fromObject = JSONObject.parseObject(context);
            String code = fromObject.getString("code");
            if(code.equals("0")){
            if (code.equals("0")) {
                JSONObject jsonObject = fromObject.getJSONObject("data");
                ipAddress =  "["+jsonObject.get("country")+"/" +jsonObject.get("city")+"]";
                ipAddress = "[" + jsonObject.get("country") + "/" + jsonObject.get("city") + "]";
            }
        }catch(Exception e){
            log.error("获取IP所属地址出错",e);
            e.printStackTrace();
        } catch (Exception e) {
            log.error("获取IP所属地址出错");
            // e.printStackTrace();
        }
        return ipAddress;
    }
    /**
     *
     * 描述:获取Ip所属地址
     * @author huaping hu
     * @date 2016年6月1日下午5:38:55
     *
     * @param urlStr
     * @return
     * @author huaping hu
     * @date 2016年6月1日下午5:38:55
     */
    public static String call( String urlStr ){
    public static String call(String urlStr) {
        try {
@@ -121,35 +119,36 @@
            int code = httpCon.getResponseCode();
            if(code == 200){
            if (code == 200) {
                return streamConvertToSting(httpCon.getInputStream());
            }
        } catch (Exception e) {
            log.error("获取IP所属地址出错",e);
            log.error("获取IP所属地址出错", e);
            e.printStackTrace();
        }
        return null;
    }
    /**
     *
     * 描述:将InputStream转换成String
     * @author huaping hu
     * @date 2016年6月1日下午5:51:53
     *
     * @param is
     * @return
     * @author huaping hu
     * @date 2016年6月1日下午5:51:53
     */
    public static String streamConvertToSting(InputStream is){
    public static String streamConvertToSting(InputStream is) {
        String tempStr = "";
        try {
            if(is == null) return null;
            if (is == null)
                return null;
            ByteArrayOutputStream arrayOut = new ByteArrayOutputStream();
            byte[] by = new byte[1024];
            int len = 0;
            while((len = is.read(by))!=-1){
                arrayOut.write(by,0,len);
            while ((len = is.read(by)) != -1) {
                arrayOut.write(by, 0, len);
            }
            tempStr = new String(arrayOut.toByteArray());
@@ -160,7 +159,6 @@
    }
    public static void main(String[] args) {
        String context = call("http://ip.taobao.com/service/getIpInfo.php?ip=120.192.182.1");