用IP在淘宝IP地址库库换地址 & json 解析应用

首先:我需要做一个玩家省份统计的需求,我只有他们的IP 如果然我一个个去百度搜IP,然后一个个输入,简直太要命,所以,我做了一个用Java 代替人力 用IP去换物理地址

思路:我在访问淘宝IP地址库的时候发现了 每次搜索 都会发送一个Http协议的Post的请求

并发现了 这是一个Json响应的结果。

我就想:利用Java代码 模拟Http请求 不也能做到同样的效果么,当然,这里的模拟是指 模拟 人 手动请求。

首先,要找到Http的请求工具,我想了一下Hutool库中有此工具,Maven如下

 <!--Hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.5.6</version>
        </dependency>

然后发送了请求,我得需要处理Json吧,那就使用传说中的Alibaba的FastJson吧

 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.74</version>
        </dependency>

既然 得了此 两员大将,那就开始盘它。

这里,再次强调一下思路

利用Hutool的Http请求Util,发送Post请求,得到一个String, 用这个String经过第一次FastJson处理封装到Map集合, 获取的集合内容是我们浏览器看到的Json

我们需要的数据在data里面,所以,要拿出来data数据,作为String,在经过FastJson处理一下,得到

的Map集合,我们就可以随便控制输出了。

代码如下

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import java.util.HashMap;
import java.util.Map;

public class PostTaobaoGetPos {

    public static void main(String[] args) {
        HashMap<String, Object> paramMap = new HashMap<>();
        paramMap.put("ip", "49.85.228.158");
        paramMap.put("accessKey", "alibaba-inc");
        String result1 = HttpUtil.post("http://ip.taobao.com/outGetIpInfo", paramMap);

        Map jsonmap = (Map)JSON.parse(result1);
        
        Map<String,String> datamap = (Map)JSON.parse(jsonmap.get("data").toString());

        System.out.println("判断下请求是否拿到数据了 (如果是0,那么完蛋,啥也没拿到):"+datamap.size());
        System.out.println();
        System.out.println("ip is:"+datamap.get("queryIp"));
        System.out.println("国家 is:"+datamap.get("country"));
        System.out.println("省份 is:"+datamap.get("region"));
        System.out.println("市 is:"+datamap.get("city"));
        System.out.println("运营商 is:"+datamap.get("isp"));

    }
}

还是那句话,你只看到了大佬轻松解决问题的光鲜,却不记得当初人家死磕Bug的痛苦。

万物皆入轮回,谁也躲不掉!

以上文章,均是我实际体验,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,支持下原创,请勿直接盗用,有条件的可以开通个会员支持下,谢谢!!!

Java Code Study » 用IP在淘宝IP地址库库换地址 & json 解析应用

招聘、单纯问问题,都可以联系我

加我QQ 公司缺人,拉我入伙