104 lines
3.5 KiB
Java
104 lines
3.5 KiB
Java
|
package com.ruoyi.webApi;
|
|||
|
|
|||
|
import com.alibaba.fastjson2.JSONObject;
|
|||
|
import com.ruoyi.system.service.ISysConfigService;
|
|||
|
import org.springframework.beans.factory.annotation.Autowired;
|
|||
|
import org.springframework.stereotype.Component;
|
|||
|
import org.springframework.web.bind.annotation.PostMapping;
|
|||
|
|
|||
|
import java.io.BufferedReader;
|
|||
|
import java.io.IOException;
|
|||
|
import java.io.InputStreamReader;
|
|||
|
import java.io.OutputStream;
|
|||
|
import java.net.HttpURLConnection;
|
|||
|
import java.net.URL;
|
|||
|
|
|||
|
/**
|
|||
|
* @author 16358
|
|||
|
* @date 2025/6/5
|
|||
|
*/
|
|||
|
@Component("apiTask")
|
|||
|
public class ApiTask {
|
|||
|
@Autowired
|
|||
|
private ISysConfigService sysConfigService;
|
|||
|
|
|||
|
//登录星空接口
|
|||
|
public String OAlogin(){
|
|||
|
// 目标URL
|
|||
|
String url = sysConfigService.selectConfigByKey("OA_Url")+"/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";
|
|||
|
// 请求体,JSON格式
|
|||
|
String jsonInputString = sysConfigService.selectConfigByKey("login_JSON");
|
|||
|
|
|||
|
try {
|
|||
|
// 创建URL对象
|
|||
|
URL apiUrl = new URL(url);
|
|||
|
// 打开连接
|
|||
|
HttpURLConnection connection = (HttpURLConnection) apiUrl.openConnection();
|
|||
|
|
|||
|
// 设置请求方法为POST
|
|||
|
connection.setRequestMethod("POST");
|
|||
|
|
|||
|
// 设置请求头
|
|||
|
// Content-Type 指定发送的数据格式是JSON,并且字符集为UTF-8
|
|||
|
connection.setRequestProperty("Content-Type", "application/json; utf-8");
|
|||
|
// Accept 指定期望接收的数据格式是JSON
|
|||
|
connection.setRequestProperty("Accept", "application/json");
|
|||
|
|
|||
|
// 允许写入请求体
|
|||
|
connection.setDoOutput(true);
|
|||
|
|
|||
|
// 获取输出流,发送请求体数据
|
|||
|
try (OutputStream os = connection.getOutputStream()) {
|
|||
|
byte[] input = jsonInputString.getBytes("utf-8");
|
|||
|
os.write(input, 0, input.length);
|
|||
|
}
|
|||
|
|
|||
|
// 获取响应码
|
|||
|
int responseCode = connection.getResponseCode();
|
|||
|
|
|||
|
// 读取响应内容
|
|||
|
StringBuilder response = new StringBuilder();
|
|||
|
try (BufferedReader br = new BufferedReader(
|
|||
|
new InputStreamReader(connection.getInputStream(), "utf-8"))) {
|
|||
|
String responseLine = null;
|
|||
|
while ((responseLine = br.readLine()) != null) {
|
|||
|
response.append(responseLine.trim());
|
|||
|
}
|
|||
|
return response.toString();
|
|||
|
}catch (Exception e) {
|
|||
|
throw new RuntimeException("因未知原因导致登录OA系统失败!");
|
|||
|
}
|
|||
|
|
|||
|
} catch (IOException e) {
|
|||
|
throw new RuntimeException(e);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//判断是否登录成功并返回token
|
|||
|
public String getToken(){
|
|||
|
//触发登录接口
|
|||
|
String response = OAlogin();
|
|||
|
|
|||
|
// 解析响应体为 JSONObject
|
|||
|
JSONObject jsonResponse = JSONObject.parseObject(response.toString());
|
|||
|
// 提取 "Message" 字段
|
|||
|
if (jsonResponse != null && !jsonResponse.containsKey("")) {
|
|||
|
String loginResultType = jsonResponse.getString("LoginResultType");
|
|||
|
if("1".equals(loginResultType)){
|
|||
|
return jsonResponse.getString("KDSVCSessionId");
|
|||
|
}else {
|
|||
|
throw new RuntimeException(jsonResponse.getString("Message"));
|
|||
|
}
|
|||
|
} else {
|
|||
|
throw new RuntimeException("返回参数解析错误!");
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
//测试任务
|
|||
|
public void testTAS(){
|
|||
|
String token = getToken();
|
|||
|
System.out.println(token);
|
|||
|
}
|
|||
|
}
|