以下是index.jsp 中的脚本代码 内容很简单,寥寥几句话而已,望高手驻足。
本人使用腾讯开放的一个端口,在前台页面jsp 内写了这么个方法。 今天让朋友在上海测试了一下,
结果地址还是我本地的,有些无语了哎, 请问各位见多识广的大牛们,此错误在哪?
朋友访问我的系统 存取到数据库的地址 为什么还是我本地的~
- Java code
<% //用户地理位置及其IP String ipAndAddress =""; try{ //获取当前IP 和地理位置信息 sdy URL url = new Url("http://fw.qq.com/ipaddress"); //腾讯接口 URLConnection connection = url.openConnection(); connection.connect(); BufferedReader inreader = new BufferedReader( new InputStreamReader(connection.getInputStream(),"GB2312")); String str = null; if(inreader.ready() ) { str = inreader.readLine(); } String[] strArr_0 = str.split("Array"); str = strArr_0[1].replaceAll("\"",""); String[] strArr_1 =str.substring(1,str.length()-2).split(","); ipAndAddress = strArr_1[2]+" "+strArr_1[3]; }catch(Exception e){ ipAndAddress ="江苏省**市(内网)"; }%>
------解决方案--------------------------------------------------------
估计是方法内有异常了,所以直接进入
catch(Exception e){
ipAndAddress ="江苏省**市(内网)";
}
------解决方案--------------------------------------------------------
问题明显了,因为每次都是你的jsp执行这个方法,而你的jsp是在你的本地服务器,虽然客户端在上海访问你的jsp,但jsp的执行还是在你本地服务器。而腾讯这个接口,谁向他建立 链接,就返回谁的IP信息,明显,每次都是你的JSP所在的服务器向腾讯建立连接,所以总是你本地服务器地址。
如果你想获取访问jsp的客户端的归属地,可以到网上找个webservice服务(一搜一大堆),将客户端的IP从request中获取,再到webservice服务器查询。
------解决方案--------------------------------------------------------
ip传入的是本地服务器的。。。看看能不能找到一个获取客户端ip的方法传进去。。。
request.getRemoteAddr();返回发送请求的客户端或最后一个代理的IP地址
这里有方法:http://easin.iteye.com/blog/416565
------解决方案--------------------------------------------------------
直接取IPData[3],保存数据库