u8api php,如何查找和使用U8的API

///

///销售订单(业务类型报错)

///

///

///

public static void AddSO_SOMain(U8Login.clsLogin u8Login,String id, ref string vNewIDRet)

{

//第二步:构造环境上下文对象,传入login,并按需设置其它上下文参数

U8EnvContext envContext = new U8EnvContext();

envContext.U8Login = u8Login;

//销售所有接口均支持内部独立事务和外部事务,默认内部事务

//如果是外部事务,则需要传递ADO.Connection对象,并将IsIndependenceTransaction属性设置为false

//envContext.BizDbConnection

= new ADO.Connection();

//envContext.IsIndependenceTransaction

= false;

//设置上下文参数

envContext.SetApiContext("VoucherType", 12); //上下文数据类型:int,含义:单据类型:12

//第三步:设置API地址标识(Url)

//当前API:新增或修改的地址标识为:U8API/SaleOrder/Save

U8ApiAddress myApiAddress = new U8ApiAddress("U8API/SaleOrder/Save");

//第四步:构造APIBroker

U8ApiBroker broker = new U8ApiBroker(myApiAddress,

envContext);

//第五步:API参数赋值

//给BO表头参数domHead赋值,此BO参数的业务类型为销售订单,属表头参数。BO参数均按引用传递

//提示:给BO表头参数domHead赋值有两种方法

//方法一是直接传入MSXML2.DOMDocumentClass对象

//broker.AssignNormalValue("domHead",

new MSXML2.DOMDocumentClass())

ADODB.Connection conn = new ADODB.ConnectionClass();

ADODB.Recordset rs = new ADODB.RecordsetClass();

MSXML2.DOMDocument domhead = new MSXML2.DOMDocumentClass();

string strConn = string.Format("Provider=SQLOLEDB;Initial Catalog={0};Data

Source={1};", "UFData_" + u8Login.get_cAcc_Id() + "_" +

u8Login.cIYear, u8Login.dbServerName);

conn.Open(strConn, "sa", u8Login.SysPassword, 0);

string sql = "select top 1 * from SaleOrderQ

whereid='" + id + "'";

rs.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1);

rs.Save(domhead, ADODB.PersistFormatEnum.adPersistXML);

U8APIHelper.FormatDom(ref domhead, "A");

broker.AssignNormalValue("DomHead", domhead);

domhead.selectSingleNode("//rs:data/z:row").attributes.getNamedItem("id").nodeValue = "";

MSXML2.DOMDocument domBody = new MSXML2.DOMDocumentClass();

//domBody.RowCount

= 1;

ADODB.Connection conn1 = new ADODB.ConnectionClass();

ADODB.Recordset rs1 = new ADODB.RecordsetClass();

string strConn1 = string.Format("Provider=SQLOLEDB;Initial Catalog={0};Data

Source={1};", "UFData_" + u8Login.get_cAcc_Id() + "_" +

u8Login.cIYear, u8Login.dbServerName);

conn1.Open(strConn, "sa", u8Login.SysPassword, 0);

sql = "select

top 1 * from SaleOrderSQ whereid='" + id + "'";

rs1.Open(sql, conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockOptimistic, -1);

rs1.Save(domBody, ADODB.PersistFormatEnum.adPersistXML);

U8APIHelper.FormatDom(ref domBody, "A");

broker.AssignNormalValue("domBody", domBody);

domBody.selectSingleNode("//rs:data/z:row").attributes.getNamedItem("id").nodeValue = "";

domBody.selectSingleNode("//rs:data/z:row").attributes.getNamedItem("autoid").nodeValue = "";

//给普通参数VoucherState赋值。此参数的数据类型为int,此参数按值传递,表示状态:0增加;1修改

broker.AssignNormalValue("VoucherState", 0);

//该参数vNewID为INOUT型普通参数。此参数的数据类型为string,此参数按值传递。在API调用返回时,可以通过GetResult("vNewID")获取其值

broker.AssignNormalValue("vNewID", "");

//给普通参数DomConfig赋值。此参数的数据类型为MSXML2.IXMLDOMDocument2,此参数按引用传递,表示ATO,PTO选配

MSXML2.IXMLDOMDocument2 DomConfig = new MSXML2.DOMDocumentClass();

broker.AssignNormalValue("DomConfig", DomConfig);

//第六步:调用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,此参数按值传递,表示成功为空串

stringresult = broker.GetReturnValue() as System.String;

//获取out/inout参数值

//获取普通INOUT参数vNewID。此返回值数据类型为string,在使用该参数之前,请判断是否为空

vNewIDRet = broker.GetResult("vNewID") as string;

//结束本次调用,释放API资源

broker.Release();

return;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值