首先是 http访问地址 百度官网上给的不全 网上很多人都在写发现他们缺少了mcode 这个字段 所以正确的 HTTP应该是
http://api.map.baidu.com/geocoder/v2/?ak=你的AK&mcode=你的mcode&callback=renderReverse&location=纬度,经度&output=json&pois=0
pois等于0时候是不获取周边数据。
下面说一下mcode:就是你的 SHA1值+;+你的包名
例:8D:48:FE:B1:1D:1B:9B:37:96:59:19:B1:E9:C9;com.example
然后我看到这样的地址以后首先想到的是用占位符啊,提取方法啊。这么多字段当然要用占位符了 不要急马上坑来了。
发现占位符 转换后的 : 变成了 %3 (对方给你扔给了你一个%3,表示不认识你)
所以老老实实的拼接吧。
然后开始解析 发现 我去 解析不出来,请求一下地址看了一下数据 json最外层是 包裹的是什么鬼renderReverse&&renderReverse()
然后老老实实写了一个正则 获取一个括号里面的JSON
Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))"); Matcher matcher= pattern.matcher(s); while(matcher.find()){ jsonObject = new JSONObject( matcher.group()); }终于正常了。