"语言不通"?看WebService如何集成

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1


在传统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 相关链接


XML与JSON相互转换函数说明


Web服务调用参考


EAS的Web服务调用示例


5 划重点


1. 苍穹集成服务云提供了CallWebService函数,供用户在WebAPI连接器的定制开发中,快速调用目标系统的Web服务;


2. 由于WebService接口特性,CallWebService函数返回的数据为XML字符串。为此,集成服务云提供了如下函数供用户进行类型转换:


  • String.parseXml():输入一个XML格式的字符串,返回一个xmlobject对象。用于转换成JSON串。

  • String.xml2Json():将XML对象转换为JSON。

  • String.json2Xml():JSON对象转换为XML对象。




#往期推荐#


# 一文详解常量转换和候选键映射

API协议太多,如何高效集成?快速点进激活技能!

人工映射:轻松数据转换三步走

你了解EAS与苍穹的数据交互吗?


更多精彩内容,“码”上了解!↓



"语言不通"?看WebService如何集成

在传统ERP系统中,企业通常都拥有自己的SOA(Service-Oriented Architecture,面向服务架构)产品,比如ESB(Enterprise Service Bus,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息