diff --git a/springboot.iml b/springboot.iml
index 5cea170..7ef7640 100644
--- a/springboot.iml
+++ b/springboot.iml
@@ -175,5 +175,7 @@
+
+
\ No newline at end of file
diff --git a/springboot/pom.xml b/springboot/pom.xml
index c61ed20..340cbae 100644
--- a/springboot/pom.xml
+++ b/springboot/pom.xml
@@ -130,6 +130,12 @@
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
+
+
+ com.baidu.aip
+ java-sdk
+ 4.12.0
+
diff --git a/springboot/src/main/java/com/sincre/springboot/ApiModel/BaiduResult.java b/springboot/src/main/java/com/sincre/springboot/ApiModel/BaiduResult.java
new file mode 100644
index 0000000..7b50884
--- /dev/null
+++ b/springboot/src/main/java/com/sincre/springboot/ApiModel/BaiduResult.java
@@ -0,0 +1,53 @@
+package com.sincre.springboot.ApiModel;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
+
+public class BaiduResult {
+
+ public Boolean getSuccess() {
+ return success;
+ }
+
+ public void setSuccess(Boolean success) {
+ this.success = success;
+ }
+
+ public T getResult() {
+ return result;
+ }
+
+ public void setResult(T result) {
+ this.result = result;
+ }
+
+ public String getCode() {
+ return code;
+ }
+
+ public void setCode(String code) {
+ this.code = code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public Long getT() {
+ return t;
+ }
+
+ public void setT(Long t) {
+ this.t = t;
+ }
+
+ private Boolean success;
+ private String code;
+ private String msg;
+ private Long t;
+ private T result;
+}
diff --git a/springboot/src/main/java/com/sincre/springboot/ApiPlatform/BaiduYunServiceConfig.java b/springboot/src/main/java/com/sincre/springboot/ApiPlatform/BaiduYunServiceConfig.java
new file mode 100644
index 0000000..84d981d
--- /dev/null
+++ b/springboot/src/main/java/com/sincre/springboot/ApiPlatform/BaiduYunServiceConfig.java
@@ -0,0 +1,7 @@
+package com.sincre.springboot.ApiPlatform;
+
+public class BaiduYunServiceConfig {
+
+ public static String client_id = "76m2lnPOVEciXCOOdWR8VpR6";
+ public static String client_secret = "AEEx5oPskk91SRc2Tjy3y7af5qszMN2B";
+}
diff --git a/springboot/src/main/java/com/sincre/springboot/controller/BaiduController.java b/springboot/src/main/java/com/sincre/springboot/controller/BaiduController.java
new file mode 100644
index 0000000..8cf2b31
--- /dev/null
+++ b/springboot/src/main/java/com/sincre/springboot/controller/BaiduController.java
@@ -0,0 +1,59 @@
+package com.sincre.springboot.controller;
+
+
+import com.alibaba.fastjson.JSON;
+import com.baidu.aip.util.Base64Util;
+import com.sincre.springboot.ApiModel.BaiduResult;
+import com.sincre.springboot.ApiModel.TuYaResResult;
+import com.sincre.springboot.common.ServerResponse;
+import com.sincre.springboot.utils.ApiHelper;
+import com.sincre.springboot.utils.CacheHelper;
+import com.sincre.springboot.utils.ResultUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/Baidu/*")
+@Api(tags = "百度云服务API调用")
+public class BaiduController {
+
+ @ApiOperation("根据上传的图片二进制数据进行切图")
+ @ApiImplicitParam(name="imgPostData",value = "图片二进制数据",required = true)
+ @GetMapping("general")
+ public static ServerResponse general(byte[] imgPostData) {
+ // 请求url
+ String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general";
+ try {
+ byte[] imgData = imgPostData;
+ String imgStr = Base64Util.encode(imgData);
+ String imgParam = URLEncoder.encode(imgStr, "UTF-8");
+ String param = "image=" + imgParam;
+ // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
+ String accessToken = CacheHelper.getBaiDuToken();
+ Long t = System.currentTimeMillis();
+
+ Map headMap = new HashMap<>();
+ headMap.put("Content-Type","application/x-www-form-urlencoded");
+
+ Map bodyMap = new HashMap<>();
+ bodyMap.put("image",param);
+ bodyMap.put("t",t.toString());
+
+ String result = ApiHelper.doPost(url+accessToken,headMap,bodyMap);
+ BaiduResult baiduResult = JSON.parseObject(result,BaiduResult.class);
+ return ResultUtils.getInstance().returnResultBaidu(baiduResult);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/springboot/src/main/java/com/sincre/springboot/utils/CacheHelper.java b/springboot/src/main/java/com/sincre/springboot/utils/CacheHelper.java
index 75b7725..5f90242 100644
--- a/springboot/src/main/java/com/sincre/springboot/utils/CacheHelper.java
+++ b/springboot/src/main/java/com/sincre/springboot/utils/CacheHelper.java
@@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.sincre.springboot.ApiModel.TuYaResResult;
import com.sincre.springboot.ApiModel.TuYaResTokenObj;
+import com.sincre.springboot.ApiPlatform.BaiduYunServiceConfig;
import com.sincre.springboot.ApiPlatform.TuYaCloudService;
import com.sincre.springboot.ApiPlatform.YinShiServiceConfig;
import com.sincre.springboot.common.EhcacheUtil;
@@ -12,7 +13,13 @@ import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
-
+import org.json.JSONObject;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.List;
+import java.util.Map;
public class CacheHelper {
static EhcacheUtil ehcacheUtil = new EhcacheUtil();
@@ -131,4 +138,73 @@ public class CacheHelper {
YinShiServiceConfig.AccessToken = data.optString("accessToken");
}
+ /**
+ * 获取权限token
+ *
+ * @return 返回示例:
+ * {
+ * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
+ * "expires_in": 2592000
+ * }
+ */
+ public static String getBaiDuToken() {
+ // 官网获取的 API Key 更新为你注册的
+ String clientId = BaiduYunServiceConfig.client_id;
+ // 官网获取的 Secret Key 更新为你注册的
+ String clientSecret = BaiduYunServiceConfig.client_secret;
+ return getAuth(clientId, clientSecret);
+ }
+
+ /**
+ * 获取API访问token
+ * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
+ *
+ * @param ak - 百度云官网获取的 API Key
+ * @param sk - 百度云官网获取的 Securet Key
+ * @return assess_token 示例:
+ * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
+ */
+ public static String getAuth(String ak, String sk) {
+
+ // 获取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=" + ak
+ // 3. 官网获取的 Secret Key
+ + "&client_secret=" + sk;
+ try {
+ URL realUrl = new URL(getAccessTokenUrl);
+ // 打开和URL之间的连接
+ HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();
+ connection.setRequestMethod("GET");
+ connection.connect();
+ // 获取所有响应头字段
+ Map> map = connection.getHeaderFields();
+ // 遍历所有的响应头字段
+ for (String key : map.keySet()) {
+ System.err.println(key + "--->" + map.get(key));
+ }
+ // 定义 BufferedReader输入流来读取URL的响应
+ BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
+ String result = "";
+ String line;
+ while ((line = in.readLine()) != null) {
+ result += line;
+ }
+ /**
+ * 返回结果示例
+ */
+ System.err.println("result:" + result);
+ JSONObject jsonObject = new JSONObject(result);
+ String access_token = jsonObject.getString("access_token");
+ return access_token;
+ } catch (Exception e) {
+ System.err.printf("获取token失败!");
+ e.printStackTrace(System.err);
+ }
+ return null;
+ }
}
diff --git a/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java b/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java
index 0db99c9..fdd7a4c 100644
--- a/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java
+++ b/springboot/src/main/java/com/sincre/springboot/utils/ResultUtils.java
@@ -3,6 +3,7 @@ package com.sincre.springboot.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
+import com.sincre.springboot.ApiModel.BaiduResult;
import com.sincre.springboot.ApiModel.TuYaResResult;
import com.sincre.springboot.ApiModel.YinShiResResult;
import com.sincre.springboot.common.ResponseCode;
@@ -93,4 +94,33 @@ public class ResultUtils {
}
}
+ /**
+ * 百度云返回结果
+ * @param
+ * @return
+ */
+ public ServerResponse returnResultBaidu(BaiduResult baiduResResult) {
+ try {
+ boolean success = baiduResResult.getSuccess();
+
+ if (success) {
+ //data 返回的是数组
+ if(JSON.isValidArray(baiduResResult.getResult().toString())){
+ int total;
+ JSONArray jsonArray = JSON.parseArray(baiduResResult.getResult().toString());
+ total = jsonArray.size();
+ return ServerResponse.createBySuccess(String.valueOf(total), ResponseCode.SUCCESS.getDesc(), baiduResResult.getResult());
+ }
+ //data 返回的是对象
+ return ServerResponse.createBySuccess(ResponseCode.SUCCESS.getDesc(), baiduResResult.getResult());
+ }
+
+ int code = Integer.valueOf(baiduResResult.getCode());
+ return ServerResponse.createByErrorCodeMessage(code, baiduResResult.getMsg());
+ }
+ catch (Exception ex){
+ return ServerResponse.createByErrorMessage("服务器内部处理出错!");
+ }
+ }
+
}
--
libgit2 0.21.0