如何使用Java通过新浪API根据IP地址查询具体地区?

2026-05-26 10:572阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计524个文字,预计阅读时间需要3分钟。

如何使用Java通过新浪API根据IP地址查询具体地区?

javaimport java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import javax.servlet.http.HttpServletRequest;

public class sinaIpUtil { public static String getIp(HttpServletRequest request) { String ip=request.getHeader(X-Forwarded-For); if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(Proxy-Client-IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(WL-Proxy-Client-IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(HTTP_CLIENT_IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(HTTP_X_FORWARDED_FOR); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getRemoteAddr(); } return ip; }}

代码如下

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import javax.servlet.int.dpool.sina.com.cn/iplookup/iplookup.php?ip="+ip; try { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is,"gb2312")); String line =""; StringBuffer resultBuffer = new StringBuffer(); while ((line=br.readLine())!=null) { resultBuffer.append(line); } br.close(); is.close(); conn.disconnect(); areaArr = (resultBuffer.toString()).split(" "); newAreaArr[0] = areaArr[3]; newAreaArr[1] = areaArr[4]; newAreaArr[2]=areaArr[5]; } catch (Exception e) { // TODO: handle exception } return newAreaArr; } /** * * @param request * @param flag * 0:表示apache或者其它做主服务器; 1:表示nginx做主服务. * @return */ public static String getRemoteAddr(HttpServletRequest request, int flag) { String result = ""; int port = 80; try { port = request.getServerPort(); if (flag == 1) { if (port == 80) result = request.getHeader("X-Real-IP"); else result = request.getRemoteAddr(); } else { result = request.getRemoteAddr(); } } catch (Exception e) { ; } finally { return result; } } }

说说为什么我使用新浪的接口,起初是用的淘宝的接口,然后各种出错,因为我是想把库里以前的用户,根据Ip,新增对应的地区,需要大批量执行,结果用淘宝的接口,不是报超时,就是延缓,设置线程休眠,防止跨越淘宝规定的频率也不行,最后无奈只有舍去,结果用新浪的试下,什么都不用改,安静的稳定执行完毕,所以发出来供各位研究。

js方法

如何使用Java通过新浪API根据IP地址查询具体地区?

<script src="int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" type="text/javascript"></script> <script type="text/javascript"> function getIpPlace() { alert(remote_ip_info["province"] + "省" + , + remote_ip_info["city"] + "市") } </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

本文共计524个文字,预计阅读时间需要3分钟。

如何使用Java通过新浪API根据IP地址查询具体地区?

javaimport java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import javax.servlet.http.HttpServletRequest;

public class sinaIpUtil { public static String getIp(HttpServletRequest request) { String ip=request.getHeader(X-Forwarded-For); if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(Proxy-Client-IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(WL-Proxy-Client-IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(HTTP_CLIENT_IP); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getHeader(HTTP_X_FORWARDED_FOR); } if (ip==null || ip.length()==0 || unknown.equalsIgnoreCase(ip)) { ip=request.getRemoteAddr(); } return ip; }}

代码如下

import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import javax.servlet.int.dpool.sina.com.cn/iplookup/iplookup.php?ip="+ip; try { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.connect(); InputStream is = conn.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is,"gb2312")); String line =""; StringBuffer resultBuffer = new StringBuffer(); while ((line=br.readLine())!=null) { resultBuffer.append(line); } br.close(); is.close(); conn.disconnect(); areaArr = (resultBuffer.toString()).split(" "); newAreaArr[0] = areaArr[3]; newAreaArr[1] = areaArr[4]; newAreaArr[2]=areaArr[5]; } catch (Exception e) { // TODO: handle exception } return newAreaArr; } /** * * @param request * @param flag * 0:表示apache或者其它做主服务器; 1:表示nginx做主服务. * @return */ public static String getRemoteAddr(HttpServletRequest request, int flag) { String result = ""; int port = 80; try { port = request.getServerPort(); if (flag == 1) { if (port == 80) result = request.getHeader("X-Real-IP"); else result = request.getRemoteAddr(); } else { result = request.getRemoteAddr(); } } catch (Exception e) { ; } finally { return result; } } }

说说为什么我使用新浪的接口,起初是用的淘宝的接口,然后各种出错,因为我是想把库里以前的用户,根据Ip,新增对应的地区,需要大批量执行,结果用淘宝的接口,不是报超时,就是延缓,设置线程休眠,防止跨越淘宝规定的频率也不行,最后无奈只有舍去,结果用新浪的试下,什么都不用改,安静的稳定执行完毕,所以发出来供各位研究。

js方法

如何使用Java通过新浪API根据IP地址查询具体地区?

<script src="int.dpool.sina.com.cn/iplookup/iplookup.php?format=js" type="text/javascript"></script> <script type="text/javascript"> function getIpPlace() { alert(remote_ip_info["province"] + "省" + , + remote_ip_info["city"] + "市") } </script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易盾网络。