|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册账号
×
static void Main(string[] args)
{
//第一步:构造u8login对象并登陆(引用U8API类库中的Interop.U8Login.dll)
//如果当前环境中有login对象则可以省去第一步
U8Login.clsLogin u8Login = new U8Login.clsLogin();
String sSubId = "AS";
String sAccID = "(default)@999";
String sYear = "2015";
String sUserID = "demo";
String sPassword = "DEMO";
String sDate = "2015-01-01";
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;
//第三步:设置API地址标识(Url)
//当前API:审核单据的地址标识为:U8API/MaterialOut/Audit
U8ApiAddress myApiAddress = new U8ApiAddress("U8API/MaterialOut/Audit");
//第四步:构造APIBroker
U8ApiBroker broker = new U8ApiBroker(myApiAddress, envContext);
//第五步:API参数赋值
//给普通参数sVouchType赋值。此参数的数据类型为System.String,此参数按值传递,表示单据类型:11
broker.AssignNormalValue("sVouchType", "11");
//给普通参数VouchId赋值。此参数的数据类型为System.String,此参数按值传递,表示单据Id
broker.AssignNormalValue("VouchId", "0000000056");
//该参数errMsg为OUT型参数,由于其数据类型为System.String,为一般值类型,因此不必传入一个参数变量。在API调用返回时,可以通过GetResult("errMsg")获取其值
//给普通参数cnnFrom赋值。此参数的数据类型为ADODB.Connection,此参数按引用传递,表示连接对象:调用方控制事务时需要传入连接对象
// broker.AssignNormalValue("cnnFrom", null);
//给普通参数TimeStamp赋值。此参数的数据类型为System.Object,此参数按值传递,表示单据时间戳,用于检查单据是否修改,空串时不检查
// broker.AssignNormalValue("TimeStamp", "");
//该参数domMsg为OUT型参数,由于其数据类型为MSXML2.IXMLDOMDocument2,非一般值类型,因此必须传入一个参数变量。在API调用返回时,可以直接使用该参数
MSXML2.IXMLDOMDocument2 domMsg = new MSXML2.DOMDocument();
broker.AssignNormalValue("domMsg", domMsg);
//给普通参数bCheck赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示是否控制可用量
// broker.AssignNormalValue("bCheck", true);
//给普通参数bBeforCheckStock赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示检查可用量
// broker.AssignNormalValue("bBeforCheckStock", true);
//给普通参数bList赋值。此参数的数据类型为System.Boolean,此参数按值传递,表示传入空串
// broker.AssignNormalValue("bList", null);
//给普通参数MakeWheres赋值。此参数的数据类型为VBA.Collection,此参数按值传递,表示传空
// broker.AssignNormalValue("MakeWheres", null);
//给普通参数sWebXml赋值。此参数的数据类型为System.String,此参数按值传递,表示传入空串
// broker.AssignNormalValue("sWebXml", "");
//给普通参数oGenVouchIds赋值。此参数的数据类型为Scripting.IDictionary,此参数按值传递,表示返回审核时自动生成的单据的id列表,传空
// broker.AssignNormalValue("oGenVouchIds", null);
//第六步:调用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.Boolean,此参数按值传递,表示返回值:true,成功;false:失败
System.Boolean result = Convert.ToBoolean(broker.GetReturnValue());
//获取out/inout参数值
//获取普通OUT参数errMsg。此返回值数据类型为System.String,在使用该参数之前,请判断是否为空
System.String errMsgRet = broker.GetResult("errMsg") as System.String;
//获取普通OUT参数domMsg。此返回值数据类型为MSXML2.IXMLDOMDocument2,在使用该参数之前,请判断是否为空
// MSXML2.IXMLDOMDocument2 domMsgRet = (object)(broker.GetResult("domMsg"));
//结束本次调用,释放API资源
broker.Release();
return;
}
|
|