高德 Web 服务 API 向开发者提供 HTTP 接口 ,开发者可通过这些接口使用各类型的地理数据服务 ,返回结果支持 JSON 和 XML 格式。
-- 需要用到哪个API就去文档上找url,主要就是给这个url发起请求然后解析数据获取数据 高德地图API
https://amap.apifox.cn/doc-537179如果还没注册,就先看文档跟着步骤,非常详细有手就行
-- 在基础API文档里就是我们一般用的多的API
-- 按着他的这个调试,先自己改改参数,玩一玩(介绍的非常详细)
然后我们整合API自己使用的时候
就是向这个url发送请求获取响应的过程
也就是这个
所以我们就按这个url拼接发送请求就行了
可以发现每个API前面https://restapi.amap.com/v3/geocode/geo?·都是固定的,我们需要按格式处理后面的拼接参数
一个裸奔版供测试
裸奔版
java
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.25</version>
</dependency>
地址转经纬度+获取响应
java
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import java.util.HashMap;
import java.util.Map;
public class AmapResponseDemo {
public static void main(String[] args) {
// 1. 准备请求要素(核心:URL + 参数)
String apiUrl = "https://restapi.amap.com/v3/geocode/geo"; // 地理编码 API URL
String amapKey = "你的高德API密钥"; // 替换为自己的 key
// 请求参数(必传:key + address,可选:city)
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("key", amapKey); // 高德密钥(必传)
paramMap.put("address", "北京市朝阳区天安门"); // 待转换地址(必传)
paramMap.put("city", "北京"); // 限定城市(可选,提高精度)
paramMap.put("output", "json"); // 返回格式(必传,JSON)
// 2. 发送 GET 请求 + 获取响应体(核心步骤)
String responseBody = HttpRequest.get(apiUrl) // 指定 URL 和请求方式(GET)
.form(paramMap) // 传入参数(Hutool 自动拼接为 key=value&...,自动编码中文)
.timeout(5000) // 连接超时(5秒)
.readTimeout(5000) // 读取超时(5秒)
.execute() // 执行请求(真正发起网络调用)
.body(); // 获取响应体(API 返回的 JSON 字符串)
// 3. 解析响应数据(从 JSON 中提取需要的信息)
JSONObject responseJson = JSONUtil.parseObj(responseBody); // 字符串转 JSON 对象
// 3.1 先校验响应是否成功(高德 API 规则:status=1 表示成功)
if ("1".equals(responseJson.getStr("status"))) {
// 3.2 提取核心数据(如经纬度)
String location = responseJson.getJSONArray("geocodes") // 结果数组
.getJSONObject(0) // 取第一个匹配结果(最精准)
.getStr("location"); // 经纬度字符串(格式:"经度,纬度")
// 3.3 打印结果
System.out.println("API 响应体(JSON 字符串):" + responseBody);
System.out.println("解析后的经纬度:" + location);
} else {
// 3.4 响应失败:打印错误信息(高德 API 的 info 字段是错误描述)
String errorMsg = responseJson.getStr("info");
String errorCode = responseJson.getStr("infocode");
System.out.println("请求失败:错误信息=" + errorMsg + ",错误码=" + errorCode);
}
}
}
- 核心代码就这个
java
String responseBody = HttpRequest.get(apiUrl)
.form(paramMap)
.timeout(5000)
.readTimeout(5000)
.execute()
.body();
向url发送GET请求(高德地图一般都是GET)
.form(拼接参数)
.execute():触发请求发送(建立和高德服务器的连接,发送数据)
然后.body()获取响应体(返回的是JSON格式)
最后用JSONUtil.parseOBJ(responseBody)解析JSON,按高德API字段名提取数据
提取k-v的值,需要去文档里查看这个字段名:
比如:像这样
bi