"语言不通"?看WebService如何集成
在传统ERP系统中,企业通常都拥有自己的SOA(Service-Oriented Architecture,面向服务架构)产品,比如ESB(Enterprise Service Bus,企业服务总线),并以此完成企业内各个系统之间的交互。
随着企业云转型、数字化转型的推进,云产品与WebService的集成就变得势在必行。那么,苍穹集成服务云是如何处理这类集成场景的呢?本文带你一见分晓。
1 业务场景
以EAS的新增客户分类WebService接口为例,苍穹集成服务云提供了CallWebService函数,方便用户在集成服务云中快速调用Web服务,具体调用代码示例如下:
var url = "http://{IP}:{PORT}/ormrpc/services/WSImportCustomerGroupFacade"; var params = { materialXmlStr:'<DataInfo bostype="7A2569A2" op="4"><DataHead><creator>houaming</creator><createTime>2021-07-23 09:28:46</createTime><CU>2001</CU><number>test_customer_group_lwr</number><name>test_customergroup</name><description>testcustomerdd</description><groupStandard>customerGroupStandard</groupStandard><deletedStatus>1</deletedStatus></DataHead></DataInfo>' }; var header = { SessionId:'9f055e3a-3260-4491-965c-48eecf799f3b' //此sessionId为调用登录接口获取的ID }; var returns = CallWebService(url,"importCustomerGroupData",params,{},header); var result = returns.result.'soapenv:Body'?.'ns1:importCustomerGroupDataResponse'?.'importCustomerGroupDataReturn';
返回结果result如下:
注:以下结果为XML字符串。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Result>
<retstatus>1</retstatus>
<errorMessages>
<errorMessage number="test_customer_group_lwr">value_new</errorMessage>
</errorMessages>
</Result>
因为EAS的WebService接口特性,此处返回的数据为XML字符串。为了解决这个问题,集成服务云提供了String.parseXml函数,可以将XML字符串转换为XML对象。用户可以通过以下语法,获取指定位置的标签信息,具体代码示例如下:
var doc = String.parseXml(result);//此处result为上一步调用接口返回的xml字符串
var status=doc.#children[0].#text;
最终得到status的值为0,则为新增成功。
2 功能说明
集成服务云提供了CallWebService函数,其使用说明如下:
基本用法:
var res = CallWebService(url,method,data,cookies,headers,charset);
入参说明:
url:需要访问的链接;
method:请求方式;
data:参数为map格式,例如{“theCityName”:“深圳”};
headers:请求体,可选;
cookies:访问的cookies,可选;
charset:字符集,可选。
结果说明:
res:调用返回的结果,map类型。
其中,入参与返回结果都被封装为map结构的JSON串,以方便用户在集成服务云中直接使用。针对EAS这种较特殊的WebService接口(入参和返回结果为XML字符串),集成服务云提供了如下函数方便用户进行类型转换:
String.parseXml():输入一个XML格式的字符串,返回一个xmlobject对象。用于转换成JSON串。
String.xml2Json():将XML对象转换为JSON。
String.json2Xml():JSON对象转换为XML对象。
CallWebService函数在集成云中,主要的使用场景是在WebAPI连接器的定制开发中,用于在会话登录脚本、会话刷新脚本、API调用脚本中调用目标系统的Web服务。
用户可以针对目标系统特性,通过封装具体的调用方法来创建连接类型,通过该连接类型创建具体的连接配置后,可以直接将WebService接口登记到集成服务云中作为集成对象使用。
关于连接类型与外部API登记的讲解,请戳:“API协议太多,如何高效集成?快速点进激活技能!”
3 常见问题
问:CallWebService函数在将返回结果转换为map结构时,是否存在特殊情况?
答:除了文中说到的“EAS的Web服务接口较为特别,返回数据格式存在XML字符串,需要通过函数转换”外,如果返回结果XML中某个数组只包含一个元素,则CallWebService函数会将该数组解析成map结构,用户在访问结果的时候需要对这种情况的数组加以逻辑判断,String.xml2Json()函数需要注意同样的问题。
4 相关链接
5 划重点
1. 苍穹集成服务云提供了CallWebService函数,供用户在WebAPI连接器的定制开发中,快速调用目标系统的Web服务;
2. 由于WebService接口特性,CallWebService函数返回的数据为XML字符串。为此,集成服务云提供了如下函数供用户进行类型转换:
String.parseXml():输入一个XML格式的字符串,返回一个xmlobject对象。用于转换成JSON串。
String.xml2Json():将XML对象转换为JSON。
String.json2Xml():JSON对象转换为XML对象。
#往期推荐#
更多精彩内容,“码”上了解!↓
"语言不通"?看WebService如何集成
本文2024-09-23 00:52:38发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142312.html