调试门禁等底层系统接口经验

前言

​ 公司的业务方向是智慧园区,园区内有很多很多的底层系统,所以我们要做的大部分事情就是系统集成,在系统集成的过程中遇到了一些比较有意思的事情,下面记录一下

经验

一般像安防这样大厂家系统技术都比较新,对外提供的接口比较完善,比如安防中的海康、商汤等,但是一些比较小的厂家或者更偏底层的厂家,比如集控、消防、BA、门禁等系统,一般用的技术比较老套,可能是.net、C等底层语言,对外提供的接口也没有那么的完善,所以调试过程中遇到了一些奇怪的问题

问题

1、传参格式一定要对,比如对方文档中写的参数格式是int数组就一定要传int数组,千万不要传string数组

​ 在对接某个厂商的门禁系统时,对方提供的是http协议的接口,参数中有一个数组参数,比如授权的接口中,参数中有个门禁ID列表,一般我们传参就是这样的[1,2,3]或者['1', '2', '3'],因为设备我们是同步过来的,所以库中设计的这个ID字段是字符类型,所以传参时也自然用了后面这种字符数组的形式,然后奇怪的问题就来了,对方的授权接口提示成功,但是始终查不到这个人的授权,因为接口中不止这一个参数,还有三五个其他参数,都按着文档对了一遍,发现确实没有问题啊!所以一度以为是对方系统的接口有问题,所以找了下厂商,厂商提供了他们的一个测试软件,能测试他们的接口,在软件中也能看到传参和返回参数,试了一下之后,我挨着对照参数,返现参数名、参数个数是一致的,所以又对了一下value,因为授权的同一个人和同一个门,所以传参应该是一致的,最终发现门禁ID列表传参格式不一致,他们的软件里是用的第一种,int型的数组,而我用的是字符数组,按照我们java中,其实无论你怎么传,后面系统会自动转换为你要的类型,但是一些底层语言没有那么强大,会严格校验类型,所以改为int数组后发现一切正常!

所以一定要注意这点,参数格式一定要正确