一.项目需求:

1.客户要求,在“海柔”系统上,调用“金蝶”自定义接口,满足海柔系统获取金蝶数据的效果。

二.代码思路:

1.自定义接口业务接口,调用金蝶标准登陆接口:http://域名/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc

2.将查询语句,再单独封装成一个自定义接口。

3.在父级接口中,调用查询语句封装的接口,得到所需数据。

三.可能遇到的问题:

1.如果不将“查询语句”业务单独封装成接口,则会出现this.KDContext.Session.AppContext为null的情况,找不到数据中心。

四.代码案例:

1.业务需求代码,自定义接口:

using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.ServicesStub;
using System.ComponentModel;
using System;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.ServiceHelper;
using System.Text;
using System.Net.Http;
using System.Net.Http.Headers;
using Kingdee.BOS.WebApi.Client;
using Newtonsoft.Json;
using NoticeOfReceipt;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.App.Data;
using System.Collections.Generic;namespace NoticeOfReceipt
{[HotUpdate][Description("自定义接口,查询供应商对应仓库物料库存数据")]public class WarehouseStock_Interface : AbstractWebApiBusinessService{public WarehouseStock_Interface(KDServiceContext context) : base(context){}//供应商编码,物料编码public string SelectStockQtys(string AcctID, string Username, string Password, string FSUPPLIERNUMBER,string FNUMBER){JArray arr = new JArray();string ServiceURL = "http://localhost/";string Logindata = "";Dictionary<String, Object> dic;try{//登陆参数Object str = new{acctID = AcctID,  //账套IDusername = Username, //用户名password = Password,  //密码lcid = 2052};string login = Posturl.Post(str.ToJson(), ServiceURL + "k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc", "");Dictionary<String, Object> jsonDict = JsonConvert.DeserializeObject<Dictionary<String, Object>>(login);Logindata = jsonDict["LoginResultType"].ToString();dic = JsonConvert.DeserializeObject<Dictionary<String, Object>>(jsonDict["Context"].ToString());}catch (Exception){arr.Add("{\"Message\":\"登录失败了\"}");return arr.ToString();}if (Logindata != "1"){arr.Add("{\"Message\":\"登录失败了\"}");return arr.ToString();}//自定义查询接口参数Object parameter = new{FSUPPLIERNUMBER = FSUPPLIERNUMBER,FNUMBER = FNUMBER,};//调用查询接口,返回结果。return Posturl.Post(parameter.ToJson(), ServiceURL + "/K3Cloud/NoticeOfReceipt.WarehouseStockSql.SelectData,NoticeOfReceipt.common.kdsvc", dic["SessionId"].ToString());}}
}

2.自定义数据库查询接口:(将数据库查询封装成一层接口,被1传SessionId接口调用,则不会出现ctx为null的情况)

using Kingdee.BOS.JSON;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Orm.Metadata.DataEntity;
using Kingdee.BOS.ServiceFacade.KDServiceFx;
using Kingdee.BOS.Util;
using Kingdee.BOS.WebApi.ServicesStub;
using System.ComponentModel;
using System;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.ServiceHelper;
using System.Text;
using System.Net.Http;
using System.Net.Http.Headers;
using Kingdee.BOS.WebApi.Client;
using Newtonsoft.Json;
using NoticeOfReceipt;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.App.Data;
using System.Collections.Generic;namespace NoticeOfReceipt
{[HotUpdate][Description("自定义接口,查询供应商对应仓库物料库存数据")]internal class WarehouseStockSql : AbstractWebApiBusinessService{public WarehouseStockSql(KDServiceContext context) : base(context){}public string SelectData(string FSUPPLIERNUMBER, string FNUMBER){string sql = string.Format(@"/*dialect*/   数据库查询语句,根据自己的业务自行编码");// if (!string.IsNullOrEmpty(FSUPPLIERNUMBER))//{//sql += $" and ISNULL(FSUPPLIERNUMBER, '') = '{FSUPPLIERNUMBER}'";//}//if (!string.IsNullOrEmpty(FNUMBER))// {// sql += $" and FNUMBER = '{FNUMBER}'";// }DynamicObjectCollection data = DBUtils.ExecuteDynamicObject(this.KDContext.Session.AppContext, sql);return JsonConvert.SerializeObject(data);}}
}

3.Posturl类:(用于调用自定义接口)

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;namespace NoticeOfReceipt
{public class Posturl{public static string cke = "";public static string Post(string param, string requestUriString, string sessionid){string result;try{ServicePointManager.ServerCertificateValidationCallback = ((object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error) => true);HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUriString);httpWebRequest.Method = "POST";//string Connection = "keep-alive";httpWebRequest.ContentType = "application/json";if (!string.IsNullOrEmpty(sessionid))httpWebRequest.Headers.Add("Sessionid", sessionid);httpWebRequest.Headers.Add("Cookie", cke);byte[] bytes = Encoding.UTF8.GetBytes(param);httpWebRequest.ContentLength = (long)bytes.Length;Stream requestStream = httpWebRequest.GetRequestStream();requestStream.Write(bytes, 0, bytes.Length);requestStream.Close();HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();Stream responseStream = httpWebResponse.GetResponseStream();if (string.IsNullOrEmpty(sessionid)){cke = httpWebResponse.Headers["Set-Cookie"];}string text = "";StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8);//string str;//while ((str = streamReader.ReadLine()) != null)//{//    text = text + str + "\r\n";//}result = streamReader.ReadToEnd();responseStream.Close();}catch (WebException ex){result = "调用失败";}return result;}}
}

五.ApiPost测试请求:

ApiPost下载链接:https://www.apipost.cn/?utm_source=10120
1.调用链接:http://域名/K3Cloud/程序集.类名.方法名,程序集.common.kdsvc
2.Http请求方式:Post
3.请求结果:调用成功!

金蝶云星空自定义接口:查询数据库相关推荐

  1. 管易云·奇门对接打通金蝶云星空历史订单查询接口与销售出库新增接口

    数据源系统:管易云·奇门 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司,公司于2008年成立,拥有从事电商及新零售业务相关专业知识工作者超过1000人.为伊利.网易有道.东阿阿胶.金龙鱼. ...

  2. 旺店通·企业奇门与金蝶云星空对接集成查询采购入库单连通采购入库新增(采购入库单 all)

    旺店通·企业奇门与金蝶云星空对接集成查询采购入库单连通采购入库新增(采购入库单 all) 来源系统:旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算S ...

  3. 旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通销售出库新增(分销销售出库)

    旺店通·企业奇门与金蝶云星空对接集成查询销售出库单连通销售出库新增(分销销售出库) 对接系统旺店通·企业奇门 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服 ...

  4. 旺店通·企业奇门与金蝶云星空对接集成查询盘点单打通其他入库新增

    旺店通·企业奇门与金蝶云星空对接集成查询盘点单打通其他入库新增 对接源平台:旺店通·企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点--订单管理,之后围绕电商经营管理中的核心管理诉求,先后布局流量 ...

  5. 旺店通·企业奇门与金蝶云星空对接集成查询货品档案连通物料新增(旺店通物料对接金蝶物料)

    旺店通·企业奇门与金蝶云星空对接集成查询货品档案连通物料新增(旺店通物料对接金蝶物料) 来源系统:旺店通·企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点--订单管理,之后围绕电商经营管理中的核心 ...

  6. 旺店通·企业奇门与金蝶云星空对接集成查询退货入库单打通调拨单新增

    数据源系统:旺店通·企业奇门 慧策(原旺店通)是一家技术驱动型智能零售服务商,基于云计算PaaS.SaaS模式,以一体化智能零售解决方案,帮助零售企业数字化智能化升级,实现企业规模化发展. 对接目标平 ...

  7. 从管易云到金蝶云星空通过接口配置打通数据

    对接系统管易云 金蝶管易云是金蝶集团旗下以电商和新零售为核心业务的子公司,公司于2008年成立,拥有从事电商及新零售业务相关专业知识工作者超过1000人.为伊利.网易有道.东阿阿胶.金龙鱼.海康.科大 ...

  8. 钉钉和金蝶云星空单据接口对接

    源系统:金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台.金蝶K/3Cloud围绕着"生态.人人.体验" ...

  9. 从旺店通·企业版到金蝶云星空通过接口配置打通数据

    从旺店通·企业版到金蝶云星空通过接口配置打通数据 对接源平台:旺店通·企业版 旺店通是北京掌上先机网络科技有限公司旗下品牌,国内的零售云服务提供商,基于云计算SaaS服务模式,以体系化解决方案,助力零 ...

最新文章

  1. X431 元征诊断枪
  2. 并发编程(四):也谈谈数据库的锁机制
  3. java hashedmap_Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出...
  4. java8中Predicate用法
  5. vue-day02-vue常用特性
  6. 用三角函数正交坐标系计算三角级数(傅里叶级数)
  7. 2017.9.25 社交网络 思考记录
  8. ofo 悄然搬离中关村;董明珠称向雷军学互联网营销;Chrome 77 发布 | 极客头条...
  9. mysql 超时连接错误码_mysql链接超时错误
  10. 【Spring】学习SpringAOP
  11. 为web站点提供https服务的步骤
  12. 向linux服务器上传下载文件方式收集
  13. 斗鱼弹幕服务器第三方接入协议v1.6.2,GitHub - yyc-dev/douyu-sdk: DouYu-SDK,一个基于斗鱼弹幕API封装的SDK...
  14. 概率论第一章习题答案以及解析
  15. 写给准备找工作的同学们(阿里巴巴面试流程)
  16. Django默认用户模型类和父类 AbstractUser 介绍
  17. Python使用APP Inventor网络微数据库TinyWebDB
  18. iPad pro能运行c语言吗,办公实战 iPad Pro还是洗洗睡吧_平板电脑评测-中关村在线...
  19. 【综述】植物防御假说——Out of the quagmire of plant defense hypotheses
  20. java教程—入门—jaav简介

热门文章

  1. Python学习笔记(二)Excel保存数据
  2. 更适合用c语言编程的情况是,不大适合用汇编语言编程,更适合用C语言编程的情况是( )。...
  3. 我是学计算机的表情包,计算机考试表情包 - 计算机考试微信表情包 - 计算机考试QQ表情包 - 发表情 fabiaoqing.com...
  4. 深度剖析:伊朗钢铁厂入侵路径推测及对钢企数字化安全转型启示
  5. 国际投标文件进度计划P6输出内容及设置方法
  6. 如何计算某一天是星期几
  7. mysql安装及配置服务
  8. java正则表达式无误却匹配失败,如何用正则表达式匹配英文段落
  9. Golang 中 Slice的分析与使用(含源码)
  10. 论 做 AI 芯片的正确姿势