日期:2014-05-17  浏览次数:20709 次

(SOS) 关于JSP 根据接口 获取用户地理位置的一些小问题!进来都有分~

以下是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],保存数据库