当前位置: 首页 > news >正文

网站建设用户使用手册海南微信网站制作平台

网站建设用户使用手册,海南微信网站制作平台,中国建设人才服务信息网站,建网站怎么选择服务器✨ Spring Boot 集成金蝶 API 演示:登录 / 注销 Cookie 保存 本文将通过 Spring Boot 完整实现一套金蝶接口集成模型,包括: ✅ 普通登录✅ AppSecret 登录✅ 注销✅ Cookie 保存与复用 📅 项目结构 src/ ├── controller/ │…

✨ Spring Boot 集成金蝶 API 演示:登录 / 注销 + Cookie 保存

本文将通过 Spring Boot 完整实现一套金蝶接口集成模型,包括:

  • ✅ 普通登录
  • ✅ AppSecret 登录
  • ✅ 注销
  • ✅ Cookie 保存与复用

📅 项目结构

src/
├── controller/
│   └── KingdeeController.java         // API 接口
├── service/
│   ├── KingdeeService.java            // 登录/注销逻辑
├── component/
│   └── KingdeeSessionManager.java     // Cookie 管理
├── resources/
│   └── static/pages/kingdee.html      // 前端测试页

✨ 1. Cookie 保存组件 KingdeeSessionManager

package org.example.component;import org.springframework.stereotype.Component;import java.util.List;/*** ==================================================* This class KingdeeSessionManager is responsible for [功能描述].** @author Darker* @version 1.0* ==================================================*/@Component
public class KingdeeSessionManager {private String cookie;public void saveFromHeaders(List<String> cookies) {if (cookies != null && !cookies.isEmpty()) {// 可扩展支持多个 Cookie,但这里我们只取第一个this.cookie = cookies.get(0);}}public String getCookie() {return this.cookie;}public boolean hasCookie() {return cookie != null && !cookie.isEmpty();}public void clear() {this.cookie = null;}
}

✨ 2. 金蝶服务层 KingdeeService

package org.example.service;import org.example.component.KingdeeSessionManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.*;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.util.HashMap;
import java.util.Map;/*** ==================================================* This class KingdeeService is responsible for 金蝶 API 服务.** @author Darker* @version 2.0* ==================================================*/
@Service
public class KingdeeService {private static final String BASE_URL = "https://your.kingdee.server/K3Cloud";@Autowiredprivate KingdeeSessionManager sessionManager;private ResponseEntity<String> postWithOptionalCookie(String url, Map<String, Object> payload, boolean withCookie) {RestTemplate restTemplate = new RestTemplate();HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);if (withCookie && sessionManager.hasCookie()) {headers.add("Cookie", sessionManager.getCookie());}HttpEntity<Map<String, Object>> request = new HttpEntity<>(payload, headers);return restTemplate.postForEntity(url, request, String.class);}/*** 普通登录*/public String login() {String url = BASE_URL + "/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";Map<String, Object> payload = new HashMap<>();payload.put("parameters", new Object[]{"你的数据中心 ID", "你的用户名", "你的密码", 2052});ResponseEntity<String> response = postWithOptionalCookie(url, payload, false);// 记录 CookiesessionManager.saveFromHeaders(response.getHeaders().get(HttpHeaders.SET_COOKIE));return response.getBody();}/*** AppSecret 登录*/public String loginByAppSecret() {String url = BASE_URL + "/Kingdee.BOS.WebApi.ServicesStub.AuthService.LoginByAppSecret.common.kdsvc";Map<String, Object> payload = new HashMap<>();payload.put("parameters", new Object[]{"你的数据中心 ID",                             // 数据中心 ID"你的用户名",                                  // 用户名"你的 AppID",    							  // AppID"你的 AppSecret",           				  // AppSecret2052});ResponseEntity<String> response = postWithOptionalCookie(url, payload, false);sessionManager.saveFromHeaders(response.getHeaders().get(HttpHeaders.SET_COOKIE));return response.getBody();}/*** 注销:需要携带 Cookie*/public String logout() {String url = BASE_URL + "/Kingdee.BOS.WebApi.ServicesStub.AuthService.Logout.common.kdsvc";Map<String, Object> payload = new HashMap<>();payload.put("parameters", new Object[]{});ResponseEntity<String> response = postWithOptionalCookie(url, payload, true);// 如果注销成功(返回 true),则清除本地 cookieif ("true".equalsIgnoreCase(response.getBody().trim())) {sessionManager.clear();}return response.getBody();}
}

✨ 3. Controller 接口 KingdeeController

package org.example.controller;import org.example.service.KingdeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.web.util.UriComponentsBuilder;/*** ==================================================* This class KingdeeController is responsible for [功能描述].** @author Darker* @version 1.0* ==================================================*/@RestController
@RequestMapping("/kingdee")
public class KingdeeController {@Autowiredprivate KingdeeService kingdeeService;@GetMapping("/login")public ResponseEntity<?> login() {try {String result = kingdeeService.login();return ResponseEntity.ok(result);} catch (Exception e) {return ResponseEntity.internalServerError().body("登录失败:" + e.getMessage());}}@GetMapping("/logout")public ResponseEntity<?> logout() {try {String result = kingdeeService.logout();return ResponseEntity.ok(result);} catch (Exception e) {return ResponseEntity.internalServerError().body("注销失败:" + e.getMessage());}}@GetMapping("/login-app-secret")public ResponseEntity<?> loginByAppSecret() {try {String result = kingdeeService.loginByAppSecret();return ResponseEntity.ok(result);} catch (Exception e) {return ResponseEntity.internalServerError().body("AppSecret 登录失败:" + e.getMessage());}}
}

✨ 4. 前端测试页 kingdee.html

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>金蝶 API 测试</title><script>async function callApi(endpoint) {const res = await fetch(`/kingdee/${endpoint}`);const text = await res.text();document.getElementById('result').innerText = `[${endpoint}]:\n` + text;}</script>
</head>
<body><h2>金蝶 API 测试</h2><button onclick="callApi('login')">普通登录</button><button onclick="callApi('login-app-secret')">AppSecret 登录</button><button onclick="callApi('logout')">注销</button><pre id="result"></pre>
</body>
</html>

⚠️ Cookie 保存说明

  • 登录成功后,金蝶服务器会通过 Set-Cookie 头返回一个会话ID
  • 后续操作(注销 / 探量 / 单据传递)必须附带 Cookie
  • 本文中通过 KingdeeSessionManager 自动管理 Cookie,无需手动处理

🔗 金蝶 API 官方开发文档

官方开放平台:

  • 【K3Cloud Web API】总览:https://open.kingdee.com
  • 登录接口说明:https://open.kingdee.com/doc/view?doc_id=1055
  • App ID / Secret 说明:https://open.kingdee.com/doc/view?doc_id=1297
  • 提交单据示例:https://open.kingdee.com/doc/view?doc_id=1061

🔧 扩展方向

  • ✉ 增加 callKingdeeService(String serviceName, Object[] parameters) 通用调用方法
  • ✔ 支持查询单据 / 提交审核 / 操作单据
  • 📄 将登录状态持久化到 Redis
http://www.dtcms.com/a/467023.html

相关文章:

  • 北京营销网站建站公司定制图片软件
  • 境外网站建设cpa没有网站怎么做
  • 面试题02
  • 如何办网站 论坛保险网站建设方案
  • 网站开发最新书籍有什么好的手机推荐网站
  • 校园网站建设总体设计crm客户管理系统全称
  • 天津网站开发招聘夸克搜索引擎
  • 影视网站seo描述镇江微信推广平台
  • 网站建设有什么优势成都住建厅官方网站
  • K8S(四)—— Kubectl从入门到精通:K8s资源管理与项目生命周期实战指南
  • 如何建设一个双语的网站网站建设网上学
  • 80MW/160MWh共享储能示范项目技术方案
  • 深圳微信分销网站公司做网站的网站赚钱吗
  • 基于单片机的N型热电偶PID锅炉温度控制系统
  • 做爰全过程免费的视频网站有声音杭州企业自助建站系统
  • 东莞做网站设计制作自己的网站怎么做app吗
  • 网站开发培训光山广州11区排名
  • 生鲜网站建设的项目总结wordpress 空行
  • 今日行情明日机会——20251010
  • 制作系统签名(具体在build\target\product\security\README文件有说明):
  • 网站 备案 初审品牌整合营销机构
  • 做的比较好的返利网站知乎爱做的小说网站
  • 最大字符串配对数目(哈希表实现)
  • 深度学习赋能基因与蛋白质研究:从“盲猜”到“精准导航”的生命科学革命
  • 网站建设毕业读书笔记徐州网站的优化
  • 多决策者博弈论优化模型:从理论到实践的完整解决方案 | 23类约束条件+1368个变量+混合整数规
  • 软考中级习题与解答——第十五章_数据结构与算法应用(1)
  • 河南省建设培训中心网站做一个网站需要什么条件
  • 一级a做爰片免费网站给我看看大朗做网站在
  • 网站开发 确认函地方门户