`

利用jersey实现IP查询的js调用接口

阅读更多

      这几天一直在学习restful web services,感觉很棒,相对于之前的SOAP方式,它不仅大大缩短了我们程序员的学习周期,而且使用简单,功能强大,于是萌生了用它来实现IP查询的web services服务,可供有需要的朋友直接通过js方式进行调用的想法。因为之前曾经有朋友提到,他的客户要求实现通过来访者的IP定位地图然后查询附近的店铺,他精通页面制作,对js也比较熟悉,但却对java、dot net等不熟悉,也不想花太多的时间去学习,所以问我能不能提供js方法给他,现在终于找到解决的方法了。

      通过jersey的API得知其pojo类的方法返回的值有很多种类型,其中就包括xml和json,而这两种类型,很多js的框架都有很好的支持,有直接的方法对返回的xml,json格式的字符串进行格式化成相应的对象,在此我选择了json格式,下面说说实现的过程。

      首先,需要在方法增加这样的注解,@Produces(MediaType.APPLICATION_JSON),方法体里实现通过IP地址获取对应的信息,如国家、省份、经度、纬度等,方法返回的则是JSONObject对象,代码片段如下:

         @GET
         @Produces(MediaType.APPLICATION_JSON)
         public JSONObject getIpInfoByIpOrHost(@Context HttpServletRequest request){

                   JSONObject myObject = new JSONObject();

                   myObject.put("countryCode","");

                   ......

         }

       然后在页面利用js框架jquery.js和json2.js进行调用

       jQuery.ajax({
           type: "GET",
           url: '<%=path%>/services/ip',
           data: "ip="+ip+"&userId="+userId,
           success: function(data) {
               var myObject = JSON.parse(data);
           }
       });

 

 

       由于我的服务已经发布到互联网,所以如果其他朋友需要在自己的网站进行调用的话,可以直接把上面的url改成我服务的链接即就可,服务的链接为:http://www.jackshow.net/,方法调用参数有二个,一个是待查询的IP,一个是userId(有需要调用的朋友可以联系我,我分配一个用户帐户即可调用)。返回结果包括:

        国家代号(英):countryCode       

        国家名称(英):countryName
        省份(英): province        

        城市(英):city
        时区(英):timeZone       

        经度:jingdu
        纬度:weidu

        省份城市(纯真):chunZhenCountry

        位置(纯真):chunZhenLocation

 

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics