为了实现现场即时查询库存的需求,最近研究了一下android studio 建立了一个安卓项目来实现与金蝶云星空(8.0版本)进行openAPI的调用,虽说比较坎坷,但是在金蝶总部研发的帮助下还是成功实现了.具体如下:
第一部分:准备环境
建立安卓项目,本次的环境为新大陆的手持终端设备,安卓版本为5.1,设备版本比较老,问过厂家 厂家说出厂是啥就是啥版本,没办法升级 .
新建项目
参考官网的第三方接入配置教程 来配置本地测试环境 链接:https://vip.kingdee.com/knowledge/specialDetail/229961573895771136?category=229963554177453824&id=298030366575393024&productLineId=1
下载金蝶提供的jar文件,链接:https://openapi.open.kingdee.com/ApiSdkCenter
此处需要注意:安卓版本对应的java版本是有对应关系的 安卓5.1对应java7,总部研发推荐引用JDK1.7
解压缩复制jar文件
搞定之后修改build.gradle配置文件 建立引用
前期准备工作完成,可以开始写代码了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-------------------------------------华丽的分割线--------------------------------------------------------------------
因为之前确实没做过多少 JAVA的项目(我是C#方向的) 所以android和JAVA都是重新学起来的,不是很专业,这就导致后面的代码过程比较噩梦.
第二部分: 测试链接\ 编写demo
建立一个layout,用于承载测试数据,本次想查询即时库存,所以参考系统内WEBApi功能进行编写json串
搞定之后参考下载JDK时候金蝶官方给的javaDEMO 编写测试代码,结果~~~发现问题:
JAVA项目的目录结构和Android项目的目录结构不同,按照官方文档上的说法(OPENapi),需要配置kdwebapi.properties文件,刚刚上面说了 因为目录结构不同,建立链接的时候android项目就找不到配置文件了,这时候按照一般程序员的思路是找到引用这个配置文件的地方把引用路径改一下就OK,但是!!!!!!!!! JDK把这路径写死了..........没地方改~~~~~
呵呵哒~~~~~~~~~~~~~
报错信息:
换思路~~~ 再次反编译官方代码发现有个身份信息类可以用,那就把这个类单例一下 搞里头!!!
调用:
然后~~~~问题又来了,报错信息变了~~~,在总部老师的神奇调试下发现,JAVA项目中引用的JAVA
工具类BASE64,在编译时没有任何问题,但只要在安卓项目上运行 就 直接崩溃~~~~
解决方法是:引用安卓命名空间下的工具类~~~或者让总部老师重写一个吧~~~~~
终于~~~写好了 ~~~ 不报错了~~~
接着奏乐接着舞~~
将需要的数据准备好,开始调用api中的 executeBillQuery, 创建子线程执行网络请求操作
测试成功~!!!!! 本地测试系统返回了库存数据的json串.
注意:此处需要在安卓中使用子线程运行 否则报 主线程错误,
总结:
这是我在金蝶社区发的第一篇知识帖子,对于程序员出身的我来说金蝶云星空这款产品总体用户体验还是很不错的.
因为之前我的工作原因接触过一些国际大型ERP软件的二次开发工作(ABAP) 和我们国产软件对比来说 不得不承认~还是任重而道远啊~~
也希望金蝶研发总部在开发平台的过程中
多写点注释 勤更新技术文档,
将细枝末节的工作也做到位~~
咱们二次开发的兴趣爱好者也好共同学习共同成长~~
祝愿金蝶越来越好~~~~
放一个android可用的jdk1.7 的包 有需求的直接拿来用就好 我已经测试过了 没问题 不用提单了~~~
适用于ANDROID.zip(262.37KB)