发帖

氚云调用第三方接口

氚云知识库  / 前端/移动端  / 倒序浏览   © 著作权归作者本人所有

#楼主# 2020-11-30

跳转到指定楼层

注册氚云社区,学习低代码知识,与更多氚友互动交流

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 氚云-白泽 于 2020-12-28 02:59 编辑

  1.  氚云后端代码,是不能直接调用到第三方接口,必须做个中间层webservice,通过webservice去调用第三方返回数据,在将数据转义为JSON字符串,以SOAP协议回传给氚云。

总体业务流程图如下:

  2. webservice规范性:只能有4个同名接口,大小写都要一致,返回类型都为JSON字符串。对应关系如下表:

序号

函数

1

GetSchema(string schemaCode)

2

GetSchemaList()

3

GetList(string userCode, string   schemaCode, string filter)

4

Invoke(string userCode, string   schemaCode, string methodName, string param)

示例(C#):

  1. namespace   DingtalkWebService

  2. {

  3.       /// <summary>

  4.       /// DingWebService 的摘要说明

  5.       /// </summary>

  6.       [WebService(Namespace = "http://tempuri.org/")]

  7.       [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

  8.       [System.ComponentModel.ToolboxItem(false)]

  9.       // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。

  10.       // [System.Web.Script.Services.ScriptService]

  11.       public class DingWebService :   System.Web.Services.WebService

  12.       {

  13.           [WebMethod]

  14.           public string   GetSchema(string schemaCode)

  15.           {

  16.             return string.Empty;//返回JSON字符串

  17.           }

  18.           [WebMethod]

  19.           public string   GetSchemaList()

  20.           {

  21.             return string.Empty;//返回JSON字符串

  22.           }



  23.           [WebMethod]

  24.           public string   GetList(string userCode, string   schemaCode, string filter)

  25.           {

  26.             return string.Empty;//返回JSON字符串

  27.           }



  28.           [WebMethod]

  29. //氚云后端调用的方法名

  30.           public string   Invoke(string userCode, string   schemaCode, string methodName, string   param)

  31.           {

  32. //书写调用第三方接口方法



  33.             return string.Empty;//返回JSON字符串

  34.           }

  35.       }

  36. }
复制代码

Invoke方法返回的JSON字符串格式


  1. {"ResultCode":"0",   "Message":"",   "Schema":{"Code":"Student","Items":[{"Name":"Name","DisplayName":"学生姓名","DataType":"String"},{"Name":"Age","DisplayName":"学生年龄","DataType":"Int"},{"Name":"ReturnData","DisplayName":"子表数据","DataType":"BizStructureArray","ChildSchema":{"Code":"ResultObject","Items":[{"Name":"ResultCode","DisplayName":"执行结果代码","DataType":"Int"},{"Name":"ErrorMessage","DisplayName":"异常原因","DataType":"String"}]}}]},   "Data":{"Name":"张三","Age":"10","ReturnData":[{"ResultCode":"0","ErrorMessage":"0"},{"ResultCode":"1","ErrorMessage":"1"}]}}
复制代码

  3.  氚云系统集成-接入第三方系统的配置:将书写好的webservice挂载到服务器上,发布访问的webservice地址(外网要能访问),在将该地址配置‘接入通用系统 ’,如下图所示:

注意若webservice书写的不规范,则会显示连接失败。

  4. 氚云后端调用webservice方法:Invoke

示例:

  1.   //定义传输结构-主表

  2.           H3.BizBus.BizStructureSchema paramSchema = new   H3.BizBus.BizStructureSchema();

  3.           paramSchema.Add(new H3.BizBus.ItemSchema("BillsCustomer",   "客户", H3.Data.BizDataType.ShortString, 200,   null));

  4.           paramSchema.Add(new H3.BizBus.ItemSchema("TotalMoney",   "总计", H3.Data.BizDataType.Double, 200,   null));

  5.           //定义传输结构-子表

  6.           H3.BizBus.BizStructureSchema detailsSchema = new   H3.BizBus.BizStructureSchema();

  7.           detailsSchema.Add(new H3.BizBus.ItemSchema("Type", "收款类型", H3.Data.BizDataType.ShortString, 200, null));

  8.           detailsSchema.Add(new H3.BizBus.ItemSchema("Money", "金额", H3.Data.BizDataType.Double, 200, null));

  9.           //主表赋值

  10.           paramSchema.Add(new H3.BizBus.ItemSchema("details", "明细", H3.Data.BizDataType.BizStructureArray, detailsSchema));//子表添加到主表

  11.           H3.BizBus.BizStructure paramData = new   H3.BizBus.BizStructure(paramSchema);

  12.           paramData["BillsCustomer"] = "chen";

  13.           paramData["TotalMoney"] = 123;

  14.           //子表赋值

  15.           List < H3.BizBus.BizStructure > detailsDatas=new   List<H3.BizBus.BizStructure>();

  16.           for(int k = 0;k < 2; k++)

  17.           {

  18.             H3.BizBus.BizStructure   detailsData = new H3.BizBus.BizStructure(detailsSchema);

  19.             detailsData["Type"] =   "氚云";

  20.             detailsData["Money"] =   11;

  21.             detailsDatas.Add(detailsData);

  22.           }

  23.           //子表的值赋值给主表

  24.           paramData["details"] = detailsDatas.ToArray();



  25.           //调用Invoke接口,系统底层访问第三方WebService接口的Invoke方法

  26.           H3.BizBus.InvokeResult InResult = this.Engine.BizBus.Invoke(H3.Organization.User.SystemUserId,   H3.BizBus.AccessPointType.Legacy, this.Request.SchemaCode, "自定义参数", paramData);

  27.           if(InResult != null)

  28.           {

  29.             int Code = InResult.Code; //调用是否成功

  30.             if(Code == 0)

  31.               {

  32.                 //获取返回数据

  33.                 H3.BizBus.BizStructure Obj =   InResult.Data;

  34.             }

  35.             else

  36.             {

  37.                 //获取错误信息

  38.                 string ErrorMessage =   InResult.Message;

  39.             }

  40.           }
复制代码

回复

使用道具

0

主题

5

帖子

86

金币

lv3

Rank: 3Rank: 3Rank: 3

积分
116
zjujunge 发表于 2021-1-12 23:41:05
请问有springboot版本的webservice demo示例吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|氚云社区 |粤ICP备15096637号-1
Powered by Discuz! X3.4 Licensed  © 2001-2017 Comsenz Inc.