无数据接口及api的情况下,自行进行系统对接的一种方法

18 篇文章 0 订阅
9 篇文章 0 订阅

1、 问题
随着现在各种系统越来越多,各系统间的数据交换及对接也越来越频繁,当我们自己的系统需从其它系统获取数据或提供数据时,往往对方系统没有相关人员配合,也没有提供相应的对接接口,这时我们该怎么完成任务呢?
我在工作中就遇到这样的问题,我们自己开发的系统的需要的上级部门的系统交互,主要是从上级部门系统中获取数据,并将处理的结果数据提交回上级系统。
上级部门的系统虽然提供了数据接口api,但更改不是很及时,导致我们这边的处理结果提交不及时而超期,影响到我们单位的考核。
所以在没有办法的情况下,我决定自已封装数据对接接口。

2、思路
上级系统是一个网站系统,也提供我单位登录的帐号及密码,我们可以登录进去,用手工方式进行处理,但由于量太大,这种方式是不现实的,由于它是b/s结构,并且有帐号及密码,这就为我们自己封装接口提供了可能。

步骤,以获取数据为例,其它接口类似:
a.通过分析上级系统的登录页面,得到登录所需的调用地址,及参数提交方法
b.通过分析上级系统查询的页面,得到js获取数据的url调用地址及方法
c.通过分析的结果,使用程序模拟登录,及数据查询,从而获取我们想要的数据

3、使用的工具
chrome开发者工具、fiddle:用于分析和跟踪网页请求
开发工具:.net、java各种开发语言都可以(因为单位的系统是c#,所以这里使用的c#)

4、实现摘要

这里写图片描述

查询页面示例

在chrome开发者工具及fiddle可跟踪到如下查询提交url地址及参数,提交方式是post:
http://xxx.xxx.xxx.xxx/xxx/ajax/query.aspx
这里写图片描述
我们可以分析一下参数,可以看出调用是分页获取数据,如pageSeize是一页返回的行数,我们可以尝试将此参数调大,看能不能一次调用获取全部数据,如果不能则需要多次调用,然后合并结果。
这里写图片描述

最后返回的结果是一个json:

到这里就已经得到我们想要的结果了。
接下在来就是使用编写程序模拟post调用这个url,并取得返回结果,这里就不在赘述了。

5、注意事项
保持登录状态:
因为在程序每次调用时,都需要在登录的状态,才能调用成功,所以需要在保持调用的cookie数据,下面这里详细介绍了如何去做。
http://blog.csdn.net/chenbin520/article/details/7561293
如果登录是需要验证码的系统,可以尝试长期保持登录状态,一旦下线,就提供验证码给前端用户,手工进行验证一次,并再次保持长连。

6、结论
使用这种方法,我们应该可以自行连接大部分的系统获取和提交数据。
缺点是分析时间长,而且如果对方更改了系统,我们的接口程序也要做相应调整(其实通过对方提供的接口一样存在这个问题)。
优点是手工可以处理的功能,都可以通过这种方法封装出来,而且也不需要连接到对方的数据库中,同时数据肯定是符合对方系统要求的。
所以在有对方接口的情况下,尽量还是使用接口,可以省心,如果不想受制对方接口,就自己做吧,自力更生、丰衣足食嘛。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能青蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值