1.获取IP
根据请求头获取IP地址,使用request.getRemoteAddr()
package priv.dongyukai.funch.util;
import javax.servlet.http.HttpServletRequest;
public class IPUtil {
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Real-IP");
//判断ip是否为null/""/未知
if (ip!= null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (ip!= null && !"".equals(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}
}
2.根据IP获取地址
这里使用的是百度地图API,获取你的AK,更多功能请访问官网
public class AddressUtil {
public static String readerAddres(String ip) throws MalformedURLException, IOException, JSONException{
InputStream is = new URL("http://api.map.baidu.com/location/ip?ak=oaY8yRe********************&ip="+ip).openStream();
try {
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1){
sb.append((char) cp);
}
String jsonText =sb.toString();
JSONObject json = new JSONObject(jsonText);
return (String) ((JSONObject)json.get("content")).get("address");
} finally {
is.close();
}
}
}