以下是个人拙见,仅供参考,目前接触比较浅显,还请指正!
调用总部封装的接口,目前接触到的有两大种类:第一种是平台封装的各种单据的保存、提交、审核等等接口。 按照常规做法调用即可,后台,UI端调用皆可。
第二种是咱们的自定义接口:
KDTLoginBusinessService : Kingdee.BOS.WebApi.ServicesStub.AbstractWebApiBusinessService
public KDTLoginBusinessService(Kingdee.BOS.ServiceFacade.KDServiceFx.KDServiceContext context)
: base(context)
{
}
public JSONObject ExecuteService(string parameter)
{
//实现自己的业务内容即可
JSONObject parameters = JSONObject.Parse(parameter);
}
在调用自定义接口的时候,我们会出现以下问题需要特别注意:
有两种方式我们将来会请求我们的自定义接口,第一种是通过页面AJAX请求,第二种则是后台请求。
截止目前为止,第二种后台请求,
HttpClient httpClient = new HttpClient();
httpClient.Url = LoginUrl;
List
此处调用实例,完全没有问题的。
但是通过UI页面调用则会出现一些问题。
比如就目前的接口,我们通过以上参数,通过页面请求,弄死都不会成功。
我们往往测试自定义接口的时候,把注意力放在了自己要传递的接口参数上,传递完成后,明明通过后台调用成功,UI调用的时候就不成功?!
原因在哪里?!
原来我们忽略了后台封装的潜在隐性参数,httpClient 里面
{ "format": 1,//隐性参数 "useragent": "ApiClient",/隐性参数 "rid": "1507897230",/隐性参数 "parameters": "[{\"starttime\":\"2019-01-01 00:00:00\",\"endtime\":\"2019-01-30 00:00:000\",\"ids\":\"110361,110381,110385,166936,111195,164074,1640906\"}]",//我们自定义的参数 "timestamp": "2019-01-21T09:33:34.1072462+08:00",/隐性参数 "v": "1.0"/隐性参数}
用此方法,UI自定义接口,便可搞定。