经纬度转行政地理位置
这里调用高德地图
- 逆地理编码API服务地址
URL
|
https://restapi.amap.com/v3/geocode/regeo?parameters
|
请求方式
|
GET
|
@RequestParam(required = false) 设置参数是否为必要参数
一开始使用conn非常复杂繁琐
public static String sendPost(String url, String param) throws IOException {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();// 设置通用请求的属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "keep-Alive");
conn.setRequestProperty("Content-Type", "application/json");// 我加的一个头
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 我加的一个头
conn.setRequestProperty("Dms-Access-Token", "XXXXXXXXXXXXXXXXXXXXXXX");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
try {
while ((line = in.readLine()) != null) {
result += line;
}
} catch (IOException e) {
System.out.println("发送POST请求出现异常");
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
finally {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
}
return result;
}
后来使用spring boot httpclient几行代码搞定
post请求
@PostMapping(value = "/getlocation")
public String getlocation(@RequestParam(value = "longitude") @NotBlank String longitude,
@RequestParam(value = "latitude") @NotBlank String latitude) {
String url = "https://restapi.amap.com/v3/geocode/regeo?output=json&location=" + longitude + "," + latitude + "&key=627bb11a0cb2f519b168ec6076f1d609&radius=1000&extensions=all";
RestTemplate restTemplate = new RestTemplate();
Map<String, String> map = new HashMap<String, String>();
Location res = restTemplate.getForObject(url, Location.class, map);
return res.getRegeocode().getFormatted_address();
}
restTemplate非常简单快捷
public static void main(String[] args) { RestTemplate restTemplate = new RestTemplate();
Map<String,String> map = new HashMap<String,String>();
map.put("strs","hello");
String res = restTemplate.getForObject("http://localhost:8080/test?strs={strs}",String.class,map);
System.out.println(res);
}
另外在遇到json字符串转java对象过程中
1.[]是list数组
2.对象可以不完全包括json中对象参数
3.对象一定要加上get和set方法
4.参数对象名称要一致