package com.codebase.util; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; /** * @describe: httpServletRequest操作工具类 * @author:houkai * @Date: 2018/4/4 11:13 */ public class HttpServletRequestUtil { /** * Get request header information * @param request * @return */ public static Map<String, String> getHeadersInfo(HttpServletRequest request) { Map<String, String> map = new HashMap<>(32); Enumeration headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); map.put(key, value); } return map; } /** * Get message body information * @param request * @return */ public static String getBodyInfo(HttpServletRequest request){ StringBuffer buffer = new StringBuffer(); BufferedReader bufferedReader = null; try { InputStream inputStream = request.getInputStream(); if (inputStream != null) { bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); char[] charBuffer = new char[256]; int bytesRead = -1; while ((bytesRead = bufferedReader.read(charBuffer)) > 0) { buffer.append(charBuffer, 0, bytesRead); } } else { buffer.append(""); } } catch (IOException e) { e.printStackTrace (); } finally { if (bufferedReader != null) { try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace (); } } } return buffer.toString(); } /** * Get the current network IP * @param request * @return */ public static String getIpAddr(HttpServletRequest request){ String ipAddress = request.getHeader("x-forwarded-for"); if (StringUtil.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("Proxy-Client-IP"); } if (StringUtil.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtil.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_CLIENT_IP"); } if (StringUtil.isBlank(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR"); } if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { ipAddress = request.getRemoteAddr(); if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){ //根据网卡取本机配置的IP InetAddress inet=null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace (); } ipAddress= inet.getHostAddress(); } } //For the case of passing through multiple proxies, the first IP is the real IP of the client, and multiple IPs are divided according to ',' if ( ipAddress != null && ! "unknown" .equalsIgnoreCase( ipAddress )){ if ( ipAddress . indexOf( "," )> 0 ){ ipAddress = ipAddress .substring( 0 , ipAddress .indexOf( "," )); } } return ipAddress; } } Required maven dependencies
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency>