獲取IP地址的詳細信息——Java
阿新 • • 發佈:2018-10-13
his lib rgs ace port finally NPU java.net try
代碼
import com.alibaba.fastjson.JSON; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; /** * 根據IP地址獲取詳細的地域信息 * * @author Yawei Xi * @date 2018-10-13 */ public class IPUtil { private static final String IP_URL = "http://ip.taobao.com/service/getIpInfo.php"; public static Ip getIpDataByIp(String ip) { String data = sendGet(IP_URL + "?ip=" + ip); if (null == data) { return null; } Result result = JSON.parseObject(data, Result.class); if (null == result || result.getCode() != 0) { return null; } return result.getData(); } /** * 向指定URL發送GET方法的請求 * * @param url 發送請求的URL * @return URL 所代表遠程資源的響應結果 */ public static String sendGet(String url) { String result = ""; BufferedReader in = null; try { String urlNameString = url; URL realUrl = new URL(urlNameString); // 打開和URL之間的連接 URLConnection connection = realUrl.openConnection(); // 設置通用的請求屬性 connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); // 建立實際的連接 connection.connect(); // 獲取所有響應頭字段 // Map<String, List<String>> map = connection.getHeaderFields(); // 遍歷所有的響應頭字段 /*for (String key : map.keySet()) { System.out.println(key + "--->" + map.get(key)); } */ // 定義 BufferedReader輸入流來讀取URL的響應 in = new BufferedReader(new InputStreamReader( connection.getInputStream())); //這裏如果出現亂碼,請使用帶編碼的InputStreamReader構造方法,將需要的編碼設置進去</span> String line; while ((line = in.readLine()) != null) { result += line; } } catch (Exception e) { System.out.println("發送GET請求出現異常!" + e); e.printStackTrace(); } // 使用finally塊來關閉輸入流 finally { try { if (in != null) { in.close(); } } catch (Exception e2) { e2.printStackTrace(); } } return result; } public static class Result { private Integer code; private Ip data; public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public Ip getData() { return data; } public void setData(Ip data) { this.data = data; } } public static class Ip { private String ip; private String country; private String area; private String region; private String city; private String county; private String isp; private String countryId; private String areaId; private String regionId; private String cityId; private String countyId; private String ispId; public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getArea() { return area; } public void setArea(String area) { this.area = area; } public String getRegion() { return region; } public void setRegion(String region) { this.region = region; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getCounty() { return county; } public void setCounty(String county) { this.county = county; } public String getIsp() { return isp; } public void setIsp(String isp) { this.isp = isp; } public String getCountryId() { return countryId; } public void setCountryId(String countryId) { this.countryId = countryId; } public String getAreaId() { return areaId; } public void setAreaId(String areaId) { this.areaId = areaId; } public String getRegionId() { return regionId; } public void setRegionId(String regionId) { this.regionId = regionId; } public String getCityId() { return cityId; } public void setCityId(String cityId) { this.cityId = cityId; } public String getCountyId() { return countyId; } public void setCountyId(String countyId) { this.countyId = countyId; } public String getIspId() { return ispId; } public void setIspId(String ispId) { this.ispId = ispId; } } }
測試用例
/** * @author Yawei Xi * @date 2018-10-13 */ public class Test { public static void main(String[] args) { String ip = "140.206.194.105"; IPUtil.Ip data = IPUtil.getIpDataByIp(ip); System.out.println("IP:" + data.getIp()); System.out.println("城市:" + data.getCity()); System.out.println("網絡服務商:" + data.getIsp()); } }
測試結果
IP:140.206.194.105
城市:上海
網絡服務商:聯通
獲取IP地址的詳細信息——Java