实例介绍
【实例简介】
【实例截图】
【核心代码】
//[新增或修改]调用示例 //如果是非门户的独立进程,请将U8SOFT\ufcomsql目录中的U8Login.dll替换为Debug版的Login。 //添加对Interop.U8Login.dll引用(在U8SOFT\Interop目录) //添加对Interop.MSXML2.dll引用(在U8SOFT\Interop目录) //添加对U8API框架三个类库引用(在U8SOFT\UFMOM\U8APIFramework目录): //UFIDA.U8.U8APIFramework.dll //UFIDA.U8.MomServiceCommon.dll //UFIDA.U8.U8MOMAPIFramework.dll //声明命名空间 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; //需要添加以下命名空间 using UFIDA.U8.MomServiceCommon; using UFIDA.U8.U8MOMAPIFramework; using UFIDA.U8.U8APIFramework; using UFIDA.U8.U8APIFramework.Meta; using UFIDA.U8.U8APIFramework.Parameter; using MSXML2; namespace U8APITest { class Program { static void Main(string[] args) { //第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll) //如果当前环境中有login对象则可以省去第一步 U8Login.clsLogin u8Login = new U8Login.clsLogin(); String sSubId = "DP"; String sAccID = "(default)@999"; String sYear = "2015"; String sUserID = "demo"; String sPassword = "DEMO"; String sDate = "2015-01-11"; String sServer = "localhost"; String sSerial = ""; if (!u8Login.Login(ref sSubId, ref sAccID, ref sYear, ref sUserID, ref sPassword, ref sDate, ref sServer, ref sSerial)) { Console.WriteLine("登陆失败,原因:" u8Login.ShareString); Marshal.FinalReleaseComObject(u8Login); return; } //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; string connectionString = u8Login.UfDbName; ADODB.Connection conn = new ADODB.Connection(); conn.Open(connectionString); conn.BeginTrans(); //采购所有接口均支持内部独立事务和外部事务,默认内部事务 //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false envContext.BizDbConnection = conn; envContext.IsIndependenceTransaction = false; //设置上下文参数 envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字 envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串 envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销 //第三步:设置API地址标识(Url) //当前API:新增或修改的地址标识为:U8API/PurchaseOrder/VoucherSave U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/VoucherSave"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 //给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递 //提示:给BO表头参数DomHead赋值有两种方法 //方法一是直接传入MSXML2.DOMDocumentClass对象 MSXML2.DOMDocument domHead = new MSXML2.DOMDocument(); domHead.load(@"c:\h.xml"); broker.AssignNormalValue("DomHead", domHead); //给BO表体参数domBody赋值,此BO参数的业务类型为采购订单,属表体参数。BO参数均按引用传递 //提示:给BO表体参数domBody赋值有两种方法 //方法一是直接传入MSXML2.DOMDocumentClass对象 MSXML2.DOMDocument domBody = new MSXML2.DOMDocument(); domBody.load(@"c:\b.xml"); broker.AssignNormalValue("domBody", domBody); //给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示单据状态:2新增,1修改,0非编辑 broker.AssignNormalValue("VoucherState", 2); //该参数curID为OUT型参数,由于其数据类型为string,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("curID")获取其值 //该参数CurDom为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数 MSXML2.IXMLDOMDocument2 CurDom = new MSXML2.DOMDocument(); broker.AssignNormalValue("CurDom", CurDom); //给普通参数UserMode赋值。此参数的数据类型为int,此参数按值传递,表示模式,0:CS;1:BS broker.AssignNormalValue("UserMode", 0); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; Console.WriteLine("系统异常:" sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; Console.WriteLine("API异常:" bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { Console.WriteLine("异常原因:" exReason); } } //结束本次调用,释放API资源 broker.Release(); return; } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误 System.String result = broker.GetReturnValue() as System.String; //获取out/inout参数值 //获取普通OUT参数curID。此返回值数据类型为string,在使用该参数之前,请判断是否为空 string curIDRet = broker.GetResult("curID") as string; //获取普通OUT参数CurDom。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空 //MSXML2.IXMLDOMDocument2 CurDomRet = Convert.ToObject(broker.GetResult("CurDom")); //结束本次调用,释放API资源 broker.Release(); Audit(u8Login, conn, curIDRet); conn.CommitTrans(); return; } static string Audit(U8Login.clsLogin u8Login, ADODB.Connection conn, string id) { ////////////////////////////////////////// //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = u8Login; //采购所有接口均支持内部独立事务和外部事务,默认内部事务 //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false envContext.BizDbConnection = conn; envContext.IsIndependenceTransaction = false; //设置上下文参数 envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝字 envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串 envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销 //第三步:设置API地址标识(Url) //当前API:审核订单的地址标识为:U8API/PurchaseOrder/ConfirmPO U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/ConfirmPO"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 //给BO表头参数DomHead赋值,此BO参数的业务类型为采购订单,属表头参数。BO参数均按引用传递 //提示:给BO表头参数DomHead赋值有两种方法 MSXML2.DOMDocument domHead = GetDomHeadXml(u8Login, id); //方法一是直接传入MSXML2.DOMDocumentClass对象 broker.AssignNormalValue("DomHead", domHead); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; Console.WriteLine("系统异常:" sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; Console.WriteLine("API异常:" bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { Console.WriteLine("异常原因:" exReason); } } //结束本次调用,释放API资源 broker.Release(); return "error"; } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此返回值数据类型为System.String,此参数按值传递,表示错误描述:空,正确;非空,错误 string result = broker.GetReturnValue() as System.String; //结束本次调用,释放API资源 broker.Release(); return result; } static MSXML2.DOMDocument GetDomHeadXml(U8Login.clsLogin login, string id) { //第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数 U8EnvContext envContext = new U8EnvContext(); envContext.U8Login = login; //采购所有接口均支持内部独立事务和外部事务,默认内部事务 //如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false //envContext.BizDbConnection = new ADO.Connection(); //envContext.IsIndependenceTransaction = false; //设置上下文参数 envContext.SetApiContext("VoucherType", 1); //上下文数据类型:int,含义:单据类型,采购订单 1 envContext.SetApiContext("bPositive", true); //上下文数据类型:bool,含义:红蓝标识:True,蓝 envContext.SetApiContext("sBillType", ""); //上下文数据类型:string,含义:为空串 envContext.SetApiContext("sBusType", "普通采购"); //上下文数据类型:string,含义:业务类型:普通采购,直运采购,受托代销 //第三步:设置API地址标识(Url) //当前API:装载单据的地址标识为:U8API/PurchaseOrder/GetVoucherData U8ApiAddress myApiAddress = new U8ApiAddress("U8API/PurchaseOrder/GetVoucherData"); //第四步:构造APIBroker U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext); //第五步:API参数赋值 //给普通参数strWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示过滤条件串 broker.AssignNormalValue("strWhere", "poid = " id); //给普通参数varVoucherID赋值。此参数的数据类型为System.String,此参数按值传递,表示单据主表ID broker.AssignNormalValue("varVoucherID", ""); //给普通参数strLocateWhere赋值。此参数的数据类型为System.String,此参数按值传递,表示定位条件串 broker.AssignNormalValue("strLocateWhere", ""); //第六步:调用API if (!broker.Invoke()) { //错误处理 Exception apiEx = broker.GetException(); if (apiEx != null) { if (apiEx is MomSysException) { MomSysException sysEx = apiEx as MomSysException; Console.WriteLine("系统异常:" sysEx.Message); //todo:异常处理 } else if (apiEx is MomBizException) { MomBizException bizEx = apiEx as MomBizException; Console.WriteLine("API异常:" bizEx.Message); //todo:异常处理 } //异常原因 String exReason = broker.GetExceptionString(); if (exReason.Length != 0) { Console.WriteLine("异常原因:" exReason); } } //结束本次调用,释放API资源 broker.Release(); return null; } //第七步:获取返回结果 //获取返回值 //获取普通返回值。此参数的数据类型为System.String,此参数按引用传递,表示错误描述:空,正确;非空,错误 System.String result = broker.GetReturnValue() as System.String; //获取out/inout参数值 //out参数DomHead为BO对象(表头),此BO对象的业务类型为采购订单。BO参数均按引用传递,具体请参考服务接口定义 //如果要取原始的XMLDOM对象结果,请使用GetResult("DomHead") as MSXML2.DOMDocument MSXML2.DOMDocument DomHeadRet = broker.GetResult("DomHead") as MSXML2.DOMDocument; //结束本次调用,释放API资源 broker.Release(); return DomHeadRet; } } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论