一 ,接口分析
在进行接口对接时候需要根据金蝶那边传来的json字段进行分析,金蝶的新增和保存接口巨繁琐,需要特别注意,解析字段,我们需要传给金蝶什么字段数据,然后根据自己的实际情况,进行传输。
二,接口实现
1) 由于我使用是安卓项目,首先我需要去用于配置和创建使用 Retrofit 库进行网络请求的客户端
然后进行与网络请求相关的方法和接口定义,我使用了 RxJava 和 Retrofit 库来进行异步网络请求和数据响应处理
1.Observable<JsonArray>commitOrderPost(BasPreBaseDataOneRequestbasPreBaseDataOneRequest)
:
这是一个接口方法的声明,它定义了一个名为 commitOrderPost
的方法,用于发送网络请求并返回一个 Observable
对象。该方法接受一个类型为 BasPreBaseDataOneRequest
的参数 basPreBaseDataOneRequest
,并且返回一个 Observable
对象,该对象将在请求完成后发出 JsonArray
类型的响应。
2.Observable<JsonArray>commitOrderPost(BasPreBaseDataOneRequestbasPreBaseDataOneRequest)
:
这是接口 commitOrderPost
的声明,它指定了具体的方法签名。它与上面的接口方法相同,用于发送网络请求,并返回一个 Observable
对象,该对象将在请求完成后发出 JsonArray
类型的响应。
3.Observable<JsonArray>commitOrderPost(@Body()BasPreBaseDataOneRequestbasPreBaseDataOneRequest)
:
这是使用 Retrofit 注解的另一部分,指定了请求方法和请求体参数。在这里,它指定了使用 POST 方法发送请求,并将 BasPreBaseDataOneRequest
对象作为请求体发送给服务器。
2) 然后去封装查询项目接口需要的实体类
由于以上是查询接口,json很少所以手打代码,如果遇到保存或者新增的接口json建议使用工具创建实体类。
3)创建请求对象并设置查询参数
由于这里的项目的是json字段,所以我在这里写死代码,具体需求根据自己的实际情况设置参数
创建 BasPreBaseDataOneRequest
对象和 DataInfo
对象:
首先,创建了一个 BasPreBaseDataOneRequest
对象和一个 DataInfo
对象,用于封装查询项目所需的参数。
设置查询项目参数:
在 DataInfo
对象中,使用 setFormId
方法设置表单ID为 "BAS_PreBaseDataOne",使用 setFieldKeys
方法设置需要返回的字段为 "FNumber" 和 "FName",使用 setFilterString
方法设置查询的过滤条件。
-
发起网络请求并处理响应:
通过调用model.commitOrderPost(basPreBaseDataOneRequest)
发起网络请求,并使用 RxJava 进行链式操作处理响应。代码中使用了一些 RxJava 的操作符,如compose
、doOnSubscribe
、doOnError
和subscribe
。compose(RxUtils.schedulersTransformer())
:将请求在 IO 线程执行,响应在主线程处理,以确保在正确的线程进行操作。doOnSubscribe(disposable -> showDialog())
:在请求开始时显示进度对话框。doOnError(throwable -> {dismissDialog();})
:在请求发生错误时隐藏进度对话框。subscribe(s -> { project1 = (JsonArray) s; dismissDialog(); })
:订阅响应,将返回的响应赋值给project1
,并隐藏进度对话框。
通过创建请求对象并设置查询参数,然后使用 Retrofit 和 RxJava 发起网络请求并处理响应,将返回的响应赋值给 project1
变量,并隐藏进度对话框。
4)金蝶接口反馈的Response相应,可以看到IsSuccess字段为true,接口对接成功。
综上所述大致步骤分为创建 Retrofitv,创建 API 接口实例,发起请求,处理响应,监听状态等。