一、IpUtil
package com.java.util;import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.java.vo.IpVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.SimpleDateFormat;
@Slf4j
public class IpUtil {public static String getIpAddr(HttpServletRequest request) {String ipAddress = null;try {String ipAddresses = request.getHeader("X-Forwarded-For");if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ipAddresses = request.getHeader("Proxy-Client-IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ipAddresses = request.getHeader("WL-Proxy-Client-IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ipAddresses = request.getHeader("HTTP_CLIENT_IP");}if (ipAddresses == null || ipAddresses.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ipAddresses = request.getHeader("X-Real-IP");}if (ipAddresses != null && ipAddresses.length() != 0) {ipAddress = ipAddresses.split(",")[0];}if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddresses)) {ipAddress = request.getRemoteAddr();}} catch (Exception e) {ipAddress = "";}return ipAddress;}public static IpVo getIpVo(String ip){String url = "http://whois.pconline.com.cn/ipJson.jsp?json=true";if(!StringUtils.isEmpty(ip)){url = "http://whois.pconline.com.cn/ipJson.jsp?json=true&ip=" + ip;}StringBuilder inputLine = new StringBuilder();String read;try {HttpURLConnection urlConnection = (HttpURLConnection) new URL(url).openConnection();urlConnection.setRequestProperty("Charset", "GBK");BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "GBK"));while ((read = in.readLine()) != null) {inputLine.append(read);}in.close();} catch (Exception e) {e.printStackTrace();}IpVo ipVo = null;try {ObjectMapper mapper = new ObjectMapper();mapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));ipVo = mapper.readValue(new String(inputLine.toString().getBytes("GBK"), "GBK"), IpVo.class);} catch (IOException e) {e.printStackTrace();}return ipVo;}public static IpVo getIpVoByRequest(HttpServletRequest request){return IpUtil.getIpVo(IpUtil.getIpAddr(request));}
}
二、IpVo
package com.java.vo;import lombok.Data;
@Data
public class IpVo {private String ip;private String pro;private String proCode;private String city;private String cityCode;private String region;private String regionCode;private String addr;private String regionNames;private String err;
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!