使用 RSSBus Connect™ 系统默认 API 接口

RSSBus Connect™在为您提供强大的EDI功能的同时, 也考虑到了如何方便的与之集成. 在此篇文章中, 我们会通过一个例子为您说明关于RSSBus Connect™的API功能的使用.


浏览API定义

进入RSSBus Connect™的管理界面, 点击导航栏中的"API". 您就可以看到RSSBus Connect™默认提供的API接口.
在这里插入图片描述

从上图可一看到, RSSBus Connect™的API是以OData协议方式暴露的. OData是一种流行的REST接口的包装方式. RSSBus Connect™默认遵从与OData V4协议. 其内容均以JSON方式传输.

点击左边列表中的任何一个连接, 你就可以看到关于这个API的详细描述. 比如下图中的"ports"接口. 您可以通过描述页面上的集中方法对RSSBus Connect™中的端口(Port)进行增删改查的操作.

HTTP方法URL操作
GEThttp://localhost:8001/api.rsc/ports/获取当前所有的Port及其配置. 支持$fileter等OData查询.
GEThttp://localhost:8001/api.rsc/ports()获取指定PortId的Port及其配置.
POSThttp://localhost:8001/api.rsc/ports/创建一个新的Port, 其配置由Post请求的Body指定.
PUThttp://localhost:8001/api.rsc/ports/修改指定PortId的Port, 其新配置由Post请求的Body指定.
DELETEhttp://localhost:8001/api.rsc/ports/删除指定PortId的Port

您可以用任何浏览器打开*http://localhost:8001/api.rsc/ports/*地址. 然后您就可以看到当前所有的Port及其配置了.

在这里插入图片描述

API的安全认证

可以看到, RSSBus Connect™提供了非常强大的接口功能. 基本上, 您可以用它完成任何在管理界面完成的工作. 正因此, RSSBus Connect™也提供了全面的安全认证方式.

首先, 进入管理界面的 “PROFILE” -> "Security"界面. 如下, 您可以在这里创建/修改方位API的用户和IP地址.

![security.png][12]

创建用户

这里的用户不同于您用来登录管理界面的用户. 它只能被用于API的访问.

点击"User Permissions"表下方的"Add"按钮, 您就可以开始创建用户了. 这里, 您需要输入的是用户名称和他的访问权限. 对于权限, 您可以参考上面我们列出的表格. 几种方法分别这对于增删改查四种操作.

保存之后, 您刚创建的用户就会出现在表中. 并且他会被赋予一个随机的Authtoken. 这个Authtoken就可以被用于API调用的权限认证.

访问来源限制

默认情况下, RSSBus Connect™只允许本机访问API. 如果您希望从其他电脑/平台访问API. 那您就需要将其来源IP地址加入"Trusted IP Address"表. 点击其下的"Add"按钮就可以增加一个来源. 注意, 输入""将会使RSSBus Connect™允许任何来源. 当然, 您可以使用类似于"192.168."这样的配置来允许一个网段的访问.

示例

这里, 我们用一个例子来说明如何用C#调用RSSBus Connect™的接口. 假设, 我们的RSSBus Connect™已有一个AS2端口(PortId=TestAS2), 其用于和A公司做EDI报文的收发操作. 现在我们需要将ERP生成的EDI文件上传给这个AS2端口, 置于其待发送队列. 于此同时, 我们也需要检查AS2端口的接收文件队列, 获取最近收到的EDI文件.

首先的, 我们通过浏览 http://localhost:8001/api.rst#files 地址,了解了files接口的详细信息.

获取文件列表

我们知道通过 GET http://localhost:8001/api.rsc/files/ 可以获取所有文件. 但, 在这里我们需要制定PortId和Folder参数来仅获取我们感兴趣的内容. 所以, 我们需要 GET http://localhost:8001/api.rsc/files?PortId=TestAS2&Folder=Receive. 即, 指定PortId为TestAS2, Folder为Receive. 下面是使用C#代码的例子.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files?PortId=TestAS2&Folder=Receive");
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k"); // 这就是上一步创建的Authtoken
 
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"))) {
  String responseText = reader.ReadToEnd();
  // 解析Json获取文件列表
}
response.Close();
获取文件内容

通过上面的代码, 我们获得了接收文件的列表. 然后我们就可以用 GET http://localhost:8001/api.rsc/files(<PortId=(PortId),Folder=(Folder),Filename=(Filename),MessageId=(MessageId)>) 这个API来获取指定文件的内容了. 比如: http://localhost:8001/api.rsc/files(PortId=‘TestAS2’,Folder=‘Receive’,Filename=‘test_data_1.edi’,MessageId=’’). 下面是使用C#代码的例子.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files(PortId='TestAS2',Folder='Receive',Filename='test_data_1.edi',MessageId='')");
request.Method = "GET";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k");
 
HttpWebResponse response = (HttpWebResponse) request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8"))) {
  String responseText = reader.ReadToEnd();
  // parse Json
}
response.Close();
上传文件

接下来, 如果我们需要将文件上传到AS2端口的待发送队列, 我们就要使用 POST http://localhost:8001/api.rsc/files/ 接口. 而,文件的内容和文件名需要通过JSON格式发送. 如下:

{
  "Folder": "Send",
  "Filename": "test.edi",
  "Content": "dGVzdA==",
  "PortId": "TestAS2",
  "MessageId": ""
}

其中, Content是文件内容的BASE64编码. 下面是使用C#代码的例子. 注意, 您的用户需要POST权限才能使用POST方法.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:8001/api.rsc/files");
request.Method = "POST";
request.ContentType = "application/json";
request.Headers.Add("x-rssbus-authtoken", "3m5X3i5a7G7p0f9F9u3k");
String file = "{\"Folder\": \"Send\",\"Filename\": \"test.edi\",\"Content\": \"dGVzdA==\",\"PortId\": \"TestAS2\",\"MessageId\"\"}";
byte[] fileBytes = Encoding.UTF8.GetBytes(file);
request.ContentLength = fileBytes.Length;
request.GetRequestStream().Write(fileBytes, 0, fileBytes.Length);
request.GetRequestStream().Close();
request.GetResponse().Close();
下载C#示例工程

该Demo实现的是调用Sendfile API,下载示例工程

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知行EDI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值