webapi问题集合(持续更新)原创
金蝶云社区-eris
eris
16人赞赏了该文章 14788次浏览 未经作者许可,禁止转载编辑于2023年03月14日 08:14:39

【相关资料】

1、所有单据所有接口在线资料--数据字典

2、各种语言集成汇总贴  

3、页面和Api对操作人和操作时间处理

4、WebApi-python下的所有接口

登录接口

1、登录接口介绍以及常见问题

1、一次登录多次使用简单示例

2、第三方系统单点登录到金蝶云     

3、第三方系统集成星空工作流                        

4、免登功能

【保存接口】

1、保存接口介绍 

2、保存接口--使用保存接口修改单据    

3、保存接口--带关联数据包   

4、保存接口--各种字段格式 

5、保存接口--返回自定义结果    

6、弹性域保存接口

7、批量保存接口-性能调优   

【查询接口】      

1、查询接口--介绍       

2、WebAPI--如何查询即时库存可用量   

【自定义接口】

1、自定义接口--自定义接口调用报表数据

2、自定义接口--自定义接口介绍

3、WebAPI自定义接口调用报表数据

【下推接口】

1、【API下推接口】---实现一行拆成多行

【插件相关】

1、WebApi--事件OnBeforeWebApiOperation

2、WebApi-服务端插件安全调用webapi      

【其他】

1、Https证书

2、webapi-实现单据保存提交和审核    

16、附件--上传下载附件   

17、WebApi--页面和Api接口对操作人和操作日期的处理情况

18、WebApi--Https协议或TLS升级导致API接口不能访问                         

20、自定义接口--自定义登录接口实现对当前组织的指定

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格式有问题。