本文档详细介绍了金蝶云系统中WebApi接口的使用及相关问题处理,包括登录、保存、查询、自定义、下推等接口的功能介绍、常见问题及解决方案。还涉及了单点登录、插件事件、在线测试、数据同步、附件上传下载、会话管理、权限检测、性能调优等多个方面的操作指南和注意事项。文档旨在帮助用户更好地理解和使用金蝶云系统的WebApi接口。
【相关资料】
【登录接口】
4、免登功能
【保存接口】
1、保存接口介绍
6、弹性域保存接口
【查询接口】
1、查询接口--介绍
【自定义接口】
1、自定义接口--自定义接口调用报表数据
【下推接口】
【插件相关】
1、WebApi--事件OnBeforeWebApiOperation
【其他】
1、Https证书
16、附件--上传下载附件
17、WebApi--页面和Api接口对操作人和操作日期的处理情况
18、WebApi--Https协议或TLS升级导致API接口不能访问
21、WebApi--浅谈通过WebAPI实现金蝶云单据对接的那些事
【单点登录】
1)第三方系统单点登录到金蝶云指南V2
https://vip.kingdee.com/article/9788?productLineId=1
2)自动登录后,实现自动打开某个单据的功能
https://vip.kingdee.com/article/10881?productLineId=1&isKnowledge=2
3)云星空 - 免登功能 - 集成资料 - 参考链接
https://vip.kingdee.com/article/221201966503051264?productLineId=1
【问题】
注意事项:
<1>同步数据接口,数据包中字段的顺序要保持,禁用使用无序的集合组织数据。
<2>同步数据接口,尽量只填必要的字段数据,提高效率。
<3>同步数据接口,字段没有同步进去,可以把字段放到最后面试试
<4>同步数据接口,字段没有同步进去,可以放到NeedReturnFields中,看是否有值返回,如果有则检查相应的表是否有触发器。
<5>同步数据接口,如果多行数据只同步了一行,可以把参数IsEntryBatchFill设置为false。
2. 走那些插件事件?
<1> 首先webapi是模拟页面操作,所以都会创建View和Model,故View和Model的初始化事件和创建数据包事件都会走。
<2> 所有的接口都会走操作插件中的事件。
<3> 所有的字段都会触发值更新事件。
<4> 保存接口调用的是Model中的保存方法,而批量保存接口调用的是App层的方法,故保存接口会多走BeforeSave, AfterSave事件。
<5> 其他所有的接口都直接是调用App层方法。
3. 在线测试登录接口报错?
<1> 由于特殊处理在线测试服务器地址暂无法确定协议是http还是https,故如果地址协议不准确还需要改成https
<2> 如果报“...主机没有反应,连接尝试失败” ?需要把ip地址或网址改成localhost,这是因为服务端调用服务端的接口接口,有服务器在服务端调用,有的服务器会限制自身访问自身的IP和网址。
4. 某些字段同步数据丢失?
<1> 不要使用无序的集合组织数据
<2> 可以先调整字段顺序试试,可能在解析后面的字段时把前面的字段值覆盖了。
<3> 业务流程字段, 得放在关联数据包的后面,并且关联数据包中得有业务流程字段。
<4> 多类别基础资料字段,得放在多类别基础资料列表字段后面。
<5> 基础资料的值得在主组织下能取到。
<6>同比的数据能返回但在数据库不存在, 检查一下是否存在触发器清空
<7>通过查询接口看是否可以查询到,如果存在却查询不到,可能是nvarchar并有特殊字符。
5. 批量保存开启服务端线程?
在数据包中增加参数"BatchCount": 线程数, 一般一百个数据包可以开3到5个线程, 可以根据这个参数测试最优的性能。
6. 查看接口返回结果ResponseStatus为null ?
兼容历史,现在无法去掉,其他接口没有这种情况。
7. 在线测试可以,但接口调用不可以,比如销售出库单的客户。
一定是把数据包中的字段顺序改变了。
8. webapi上传附件成功,但页面下载却显示没有此附件?
答:t_bas_attachment中有附件信息,但t_bas_fileServerFileInfo中没有信息,说明真实没有上传成功,尾部加了个TRUE的参数试试。
9、客户名称api接口同步或保存,中间的空格都会去除?
存在触发器处理: SELECT * FROM SYSOBJECTS WHERE XTYPE='TR' AND parent_obj = OBJECT_ID('t_bd_customer_L')
10,货源清单多条明细,每次接口保存只会保存 第一条
A: 货源清单物料的录入是由物料类别决定,物料类别不是基础资料无法进行批量进行,而默认api单据体基础资料字段是批量处理,此时需要把IsBatchEntryFill 设置为false
11. 批量提交接口,返回的结果失败的没有编码,索引顺序也对不上?
成功的结果都是可以取到编码和内码的,排除成功的就都是失败的了
12. iis访问第三方接口,报403错误
需要iis访问第三方接口证书需要在mmc导入
13. 调用保存接口报会话已丢失,请重新登录?
1)调用登录接口没有判断是否成功,只有成功了才会产生会话信息。
14. 使用客户端组件,报newtonsoft.Json.dll依赖于4.0版本?
1) 封装的客户的组件固定依赖于newtonsoft.Json 4.0.0.0版本,所以其引用的组件必须为此版本。
15. api 时报索引超出范围。必须为非负值并小于集合大小?
get请求错误
1)检查一下是不是使用了get请求
2)如果不是get请求是不是服务协议https写成了http
16、"会话信息已丢失,请重新登录的报错!”
这个错误直接原因是调用接口的请求的会话信息丢失了,可能的原因:
1) 前后调用接口请求的连接不同,导致cookie不一致,这种情况一定出现上面错误。
2) 用户调用登录接口,没有判断是否登录成功,就去调用其他接口;解决方法:判断登录成功。
3)用户调用接口登录一次,一直调用其他接口,可能中间间隔时间比较长,导致会话丢失;解决方法:对返回结果信息进行处理MsgCode=1,代表会话信息没有,重新调用登录。
4)用户创建了一个静态的请求,并发请求时会导致前后覆盖,导致前面的请求的会话信息被覆盖了,从而找不到会话信息;解决方案:不要使用静态请求变量。
17、线下可以调用通,线上不可以?
是否有白名单限制
18、附件上传最大大小?
默认30M, 配置Common.config中<!--文件上传最大大小,单位KB,默认-1,不限制-->
<add key="FileUploadMaxLength" value="-1"/>
最大Json字符串:9000000
19、其他应付单据,是否期初字段报必填?
单据类型中勾选了必录,标准是不勾选必录的。奇怪的是不勾选在页面或webapi填false都报必填,难道false不是必填吗?
20、同步凭证时报系统参数中设置了只允许录入未来期间数为1的凭证?
这个提示是有问题的: 1. 用户在总账管理参数中设置了两期, 传2021年1月和2月份的数据正常,传3月份的数据就报上面错误。 2. 传2022年不管哪个月的都报上面错误(账簿不一致)
21、审核直接调拨单是报:更新库存出现异常情况,更新库存不成功?
在交互参数中加入STK_InvCheckDetailMessage
22、在线测试报基础资料不存在?
检测权限,组织过滤,或设置了高级过滤等
23、保存接口修改数据不需要产生网控?
在传入参数中加入:IsUserModelInit: true
24、自定义接口取上下文环境或DBID?
context.Session.AppContext.DBID
25、调用保存接口,报类型错误无法转换为字典?
传入的数据包Json格式有问题。