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); } }