java获取客户端公网ip与城市地址信息

本文介绍如何在Java中使用HTTP工具类获取客户端的公网IP,并结合IP库解析出对应的城市地址信息,包括地址获取工具类和HTTP工具类的实现方法。
摘要由CSDN通过智能技术生成

地址获取工具类

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
import com.tt.common.utils.http.HttpUtils;

/**
 * 获取地址类
 */
public class AddressUtils
{
   
    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);

    // IP地址查询
    public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp";

    // 未知地址
    public static final String UNKNOWN = "XX XX";

    /**
     * 获取公网ip
     * @return
     */
    public static JSONObject getPublicIp()
    {
   
            try
            {
   
                String rspStr = HttpUtils.sendGet(IP_URL, "json=true", "GBK");
                // rspStr返回数据结构 {"ip":"111.117.104.34","pro":"广东省","proCode":"440000","city":"广州市","cityCode":"440100","region":"","regionCode":"0","addr":"广东省广州市 电信","regionNames":"","err":""}
                if (null == rspStr || "".equals(rspStr.trim()))
                {
   
                    log.error("获取信息异常返回参数 {}",rspStr);
                    return init();
                }
                JSONObject obj = JSONObject.parseObject(rspStr);
                return obj;
            }
            catch (Exception e)
            {
   
                log.error("获取信息异常");
            }

        return init();
    }

    public static JSONObject init(){
   
        JSONObject obj = new JSONObject();
        obj.put("city",UNKNOWN);
        obj.put("ip",UNKNOWN);
        return obj;
    }

}

HTTP工具类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值