前言
这是我学习java调用百度api发布的第三篇博客,有关如何创建应用,快速入门获取token令牌请看我前两篇,谢谢
第一步
新建一个普通的java项目即可
然后在项目中新建一个lib目录(需要引入5个jar包)
这里有4个
SDK下载_文字识别SDK_语音识别SDK-百度AI开放平台
还有一个gson的jar包在这里
https://mvnrepository.com/artifact/com.google.code.gson/gson/2.8.8
把他们解压完复制到lib目录,然后点击添加为库
可以打开扩展就是添加成功,然后建好项目结构,可以参考一下我的项目结构
然后让我们开始学代码吧!
AuthService类
package com.baidu.aip.aiFaceTest.getToken;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
/**
* 获取token类
*
* token过期处理 2018.10.24 16:34 参考官方jar
*/
public class AuthService {
/**
* 判断token是否过期
*/
private static Calendar expireDate = null;
private static boolean flag = false; // 是否已经获取过了
public static Boolean needAuth() {
Calendar c = Calendar.getInstance();
c.add(5, 1); // 当前日期加一天
return Boolean.valueOf(!flag || c.after(expireDate));
}
/**
* 获取权限token
*
* @return 返回示例: { "access_token":
* "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
* "expires_in": 2592000 }
*/
public static String getAuth() {
// 官网获取的 API Key 更新为你注册的
String clientId = "AN8QlNlAVyG2IFM86rXgloGD";
// 官网获取的 Secret Key 更新为你注册的
String clientSecret = "EgesHPy9csiT31HTp6QE2hCtTanVWlDc";
flag = true;
return getAuth(clientId, clientSecret);
}
/**
* 获取API访问token 该token有一定的有效期,需要自行管理,当失效时需重新获取.
* @param clientId - 百度云官网获取的 API Key
* @param clientSecret - 百度云官网获取的 Securet Key
* @return assess_token
*/
private static String getAuth(String clientId, String clientSecret) {
// 获取token地址
String authHost = "https://aip.baidubce.com/oauth/2.0/token?";
String getAccessTokenUrl = authHost
// 1. grant_type为固定参数
+ "grant_type=client_credentials"
// 2. 官网获取的 API Key
+ "&client_id=" + clientId
// 3. 官网获取的 Secret Key
+ "&client_secret=" + clientSecret;
try {
URL realUrl = new URL(getAccessTokenUrl);
// 打开和URL之间的连接
HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
connection.setRequestMethod("POST");
connection.connect();
// 获取所有响应头字段
Map<String, List<St