ADD file via upload

杜韦注释
p2x9nfpei 4 months ago
parent b8d26c4eae
commit 59b310252c

@ -0,0 +1,109 @@
package com.utils; // 声明包名
// 导入用于缓冲读取字符流的类
import java.io.BufferedReader;
// 导入用于将字节流转换为字符流的类
import java.io.InputStreamReader;
// 导入用于创建 HTTP 连接的类
import java.net.HttpURLConnection;
// 导入用于表示 URL 的类
import java.net.URL;
// 导入用于创建哈希映射的类
import java.util.HashMap;
// 导入用于表示列表的接口
import java.util.List;
// 导入用于表示映射的接口
import java.util.Map;
// 导入用于处理 JSON 对象的类
import org.json.JSONObject;
// 定义一个公共类 BaiduUtil
public class BaiduUtil {
// 静态方法,根据经纬度获取省市区信息
public static Map<String, String> getCityByLonLat(String key, String lng, String lat) {
// 将纬度和经度拼接成符合要求的字符串
String location = lat + "," + lng;
try {
// 拼接请求的 URL
String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=" + key + "&output=json&coordtype=wgs84ll&location=" + location;
// 调用 HttpClientUtils 类的 doGet 方法发送请求并获取结果
String result = HttpClientUtils.doGet(url);
// 将返回的结果字符串转换为 JSON 对象
JSONObject o = new JSONObject(result);
// 创建一个用于存储地区信息的哈希映射
Map<String, String> area = new HashMap<>();
// 从 JSON 对象中提取省份信息并放入映射
area.put("province", o.getJSONObject("result").getJSONObject("addressComponent").getString("province"));
// 从 JSON 对象中提取城市信息并放入映射
area.put("city", o.getJSONObject("result").getJSONObject("addressComponent").getString("city"));
// 从 JSON 对象中提取区域信息并放入映射
area.put("district", o.getJSONObject("result").getJSONObject("addressComponent").getString("district"));
// 从 JSON 对象中提取街道信息并放入映射
area.put("street", o.getJSONObject("result").getJSONObject("addressComponent").getString("street"));
// 返回存储地区信息的映射
return area;
} catch (Exception e) {
// 打印异常堆栈信息
e.printStackTrace();
}
// 若出现异常则返回 null
return null;
}
// 静态方法,用于获取 API 访问令牌
public static String getAuth(String ak, String sk) {
// 定义获取令牌的基础 URL
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
// 拼接完整的获取令牌的 URL
String getAccessTokenUrl = authHost
// 固定参数 grant_type
+ "grant_type=client_credentials"
// 百度云官网获取的 API Key
+ "&client_id=" + ak
// 百度云官网获取的 Secret Key
+ "&client_secret=" + sk;
try {
// 创建 URL 对象
URL realUrl = new URL(getAccessTokenUrl);
// 打开与 URL 之间的连接
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
// 设置请求方法为 GET
connection.setRequestMethod("GET");
// 建立连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有响应头字段
for (String key : map.keySet()) {
// 打印响应头字段及其对应的值
System.err.println(key + "--->" + map.get(key));
}
// 创建 BufferedReader 用于读取响应内容
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
// 用于存储响应结果的字符串
String result = "";
// 用于存储每行响应内容的字符串
String line;
// 逐行读取响应内容并拼接
while ((line = in.readLine()) != null) {
result += line;
}
// 打印响应结果
System.err.println("result:" + result);
// 将响应结果字符串转换为 JSON 对象
org.json.JSONObject jsonObject = new org.json.JSONObject(result);
// 从 JSON 对象中提取访问令牌
String access_token = jsonObject.getString("access_token");
// 返回访问令牌
return access_token;
} catch (Exception e) {
// 打印获取令牌失败的提示信息
System.err.printf("获取token失败");
// 打印异常堆栈信息
e.printStackTrace(System.err);
}
// 若出现异常则返回 null
return null;
}
}
Loading…
Cancel
Save