[V6功能解说] 5天学习Sage ERP X3 Web Services(第5天)
[b]* 本文由赛捷软件(上海)有限公司翻译完成,未经授权不得转载。如需转载,请先联系相应版块的版主取得授权。[/b][attach]5083[/attach]
[b]自ASP.NET调用一个Sage X3子程序[/b]
这是整个5部分系列的第5部分,主要涉及如何为Sage ERP X3创建和耗用web services。这篇文章将着重于说明如何调用一个已作为web service发布的X3子程序。
如需浏览该系列中的其他文章,请参见以下主题:
第1天——设置X3 Web Services
第2天——创建X3 Web Services
第3天——测试X3 Web Services
第4天——自ASP.NET调用一个Sage X3对象
现在,回归我们当前的主题[b]自ASP.NET调用一个Sage X3子程序[/b] …
X3 web services的wsdl如下,其中x3v6prmp23.rkldev.local是托管web services的服务器名称。
[url]http://x3v6prmp23.rkldev.local:28880/adxwsvc/services/CAdxWebServiceXmlCC?wsdl[/url]
[b]借助Sage ERP X3 Web Services调用子程序[/b]
[b]创建调用Context(关联背景)[/b]
有关创建Context(关联背景)的说明,请参考文章第4天——自ASP.NET调用一个Sage X3对象。
[b]调用Web Service[/b]
以下这个示例基于调用一个自定制化子程序生成的Sage ERP X3 Web Service。有关创建定制子程序并将其发布为一项web service的说明,请参见文章《第2天——创建X3 Web Services》。
1. 第一步是构造用来调用web service的XML参数列表。这根据定制化web service中设定的参数会有所不同。下面的示例基于web service ZWSCUSTLIS。如下所示,传递到web service中的参数是UPDDAYS和CUSTID。结果将包括一个多达2000个客户的数组。
[attach]5084[/attach]
2. XML参数字符串的构造如下所示,以匹配子程序调用所需的参数。
<PARAM>
<FLD NAME=”UPDDAYS” >30</FLD>
<FLD NAME=”CUSTID” > </FLD>
</PARAM>
3. 调用Web Service
下面是一段调用web service所需的.net代码。web service将返回一个包含调用结果的xml字符串。这个字符串可以被解析,从而提取调用的明细。
public
List<X3_Account_List> GetAccounts(int iUpdateDays, string sAcctId)
{
List<X3_Account_List> lsAccts = new
List<X3_Account_List>();
// Initialize Connection Values
X3DataAccessConn.CallContextClass oCallContext = _connDetails.GetCallContext();
// Complete call context
oCallContext.CallContext.requestConfig = “adxwss.trace.on=off&adxwss.trace.size=16384&adonix.trace.on=off&adonix.trace.level=3&adonix.trace.size=8”;
// Build Input XML with Parameters
StringBuilder xmlInput = new
StringBuilder(“”);
xmlInput.Append(“<PARAM>”);
xmlInput.AppendFormat(“<FLD NAME=”{0}”>{1}</FLD>”, “UPDDAYS”, iUpdateDays.ToString());
xmlInput.AppendFormat(“<FLD NAME=”{0}”>{1}</FLD>”, “CUSTID”, sAcctId);
xmlInput.Append(“</PARAM>”);
// Call web service
oCallContext.ResultXML = oCallContext.WebService.run(oCallContext.CallContext, “ZWSCUSTLIS”, xmlInput.ToString());
string result = “”;
foreach (X3WebService.CAdxMessage msg in oCallContext.ResultXML.messages)
{
result += msg.message.ToString() + “^”;
}
// Success
if (result.Length == 0)
{
string xml = oCallContext.ResultXML.resultXml.ToString();
lsAccts = ExtractAccts(xml);
}
return lsAccts;
}
public
CallContextClass GetCallContext()
{
// Initialize connection values
CAdxCallContext callContext = new
CAdxCallContext();
CAdxWebServiceXmlCCService webService = new
CAdxWebServiceXmlCCService();
CAdxParamKeyValue[] paramKey = new
CAdxParamKeyValue[1];
CAdxResultXml resultXML = new
CAdxResultXml();
callContext.codeLang = _x3Language; // Connection language
callContext.codeUser = _x3User; // X3 user
callContext.password = _x3Pwd; // X3 password
callContext.poolAlias = _x3WSPool; // Connection pool name
CallContextClass context = new
CallContextClass(callContext, webService, paramKey, resultXML);
return context;
}
这是第五篇也是最后一篇关于Sage ERP X3如何创建和耗用web services的文章。
页:
[1]