图 2.4 添加对Interop.MSXML2.dll引用
图 2.5 添加对U8API框架类库引用(.dll)
图2.6 添加对U8API框架类库引用(.tlb)
图2.7 添加Microsoft XML v3.0引用
? API调用
添加必要的引用后,可以直接利用自动生成的代码示例(支持C#和VB两种语言),结合API接口详细描述,填入必要的参数值,就可以调用U8 API。
总体上,对U8 API的调用分成七个步骤: 1) 构造u8login对象并登陆;
2) 构造环境上下文对象,传入login,并按需设置其它上下文参数; 3) 设置API地址标识(Url)参数; 4) 构造APIBroker; 5) API参数赋值; 6) 调用API;
7) 获取返回结果。
详细的API调用过程请看下文“API内容”中各个模块中介绍的“开发步骤”。
下面重点介绍几个关键要点和步骤:环境上下文、API地址、APIBroker、普通参数赋值、BO参数赋值。
? 环境上下文
环境上下文指在调用U8API时需要初始化的调用环境,包括Login、事务、特殊的业务参数等。环境上下文被初始化后,相关的环境参数会被业务API使用。
U8EnvContext envContext = new U8EnvContext(); ? Login
需要将U8Login对象传递给环境上下文,U8Login对象必须已经登录过。 envContext.U8Login = u8Login; ? 事务
如果需要由外部发起事务,则可以发起事务的ADOConnection对象传递给环境上下文: ADODB.ConnectionClass conn = new ConnectionClass(); envContext.BizDbConnection = conn; 同时需要设置一个外部事务标记:
envContext.IsIndependenceTransaction = true;
? 特殊业务参数
特殊业务参数指调用某些API需要设置的特定上下文参数,比如:销售的API必须要设置如VoucherType上下文参数,设置方法为: envContext.SetApiContext(\, 23);
? API地址
API地址是指API在U8API系统中的唯一标识,也叫API的URI,调用API时,需要通过API地址构建一个代表此API的Broker对象:
U8ApiAddress myApiAddress = new U8ApiAddress(\);
? APIBroker
APIBroker是所有U8API的调用代理接口。使用U8所有API都必须通过APIBroker间
接调用。APIBroker作为一个服务代理中间件,起到了隔离API的提供者与使用者的作用,降低了耦合依赖关系。创建APIBroker必须传入API地址和环境上下文:
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
? 普通参数赋值
API参数分两种类型:BO参数和普通参数。普通参数是指非单据表头表体类型的参数,包括基本类型参数(String、Integer等)、知名对象参数(Connection、DOMDocument等)。普通参数的赋值采用如下方式:
broker.AssignNormalValue(\, 2);
? BO参数赋值
BO参数即单据表头或表体类型的参数。对BO参数,支持两种方式传入,一种传BO对象,另一种传DOM对象。以下分别介绍: ? 传BO对象
给BO表头参数或表体参数赋值,推荐使用BO对象(BussinessObject)。 例如:
BusinessObject DomHead = broker.GetBoParam(\);
/***************************** 以下是非必输字段****************************/ DomHead[0][\] = \; //现存量,string类型 DomHead[0][\] = \; //制单时间,DateTime类型 DomHead[0][\] = \; //修改时间,DateTime类型
/****************************** 以下是必输字段****************************/ DomHead[0][\] = \; //主关键字段,int类型 DomHead[0][\] = \; //日期,DateTime类型 DomHead[0][\] = \; //订单编号,string类型 DomHead.RowCount = 10; //设置行数,不设置也可
//给BO对象的字段赋值,值可以是真实类型,也可以是无类型字符串 //以下代码示例只设置第一行值。各字段定义详见API服务接口定义
??
??
在此种情况下U8 API框架会对BO对象各字段进行参数校验。对字段进行赋值时,值可以是真实类型,也可以是无类型字符串。 ? 传DOM对象
给BO表头参数或表体参数赋值,也支持直接传入DOM对象(DOMDocument)。 例如:
MSXML2.DOMDocumentClass domHead = new MSXML2.DOMDocumentClass(); domHead.load(\);
broker.AssignNormalValue(\, domHead);
但是,在此种情况下U8 API框架不会对DOM对象进行参数验证。请在使用该方法之前,确保DOM对象的正确性。