前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >EDI项目的AS2连接测试

EDI项目的AS2连接测试

原创
作者头像
知行软件EDI
修改2021-01-18 14:43:36
8660
修改2021-01-18 14:43:36
举报

本文将主要介绍在GP EDI项目开展的过程中,进行连接测试时遇到的一系列问题及相应的解决方案。

GP与供应商传输的是X12标准报文,业务类型包括856(发货通知)、940(仓库装运订单)、944(仓库库存转移收据)、945(仓库装运通知)、846(库存查询/建议)、214(运输承运人装运状态)。为了实现与供应商的EDI直连,GP选用AS2传输协议向供应商发送856、940报文,并接收供应商发送的944、945、846、214报文。

AS2,即Applicability Statement 2是企业间使用超文本传输协议进行电子数据交换的一种规范,是早期版本 AS1,即Applicability Statement 1的扩展。AS2电子数据交换标准提供安全的多用途互联网邮件扩展,并使用HTTP或更安全的HTTPS在互联网上实现实时数据传输。其中加密和数字签名可以确保信息传递的安全性、完整性和隐私性。另一个重要特性是具有不可否认性,使得消息的预期接收者不能否认自己已经收到消息。通过简单的界面配置,用户就可以使用AS2 Connector和交易伙伴建立AS2连接,实现安全可靠的数据传输。

在与供应商建立AS2连接前,需要先确认双方的AS2配置信息完整且正确,主要包含的配置信息有:AS2 Identifier、URL、IP等。成功完成连接测试是实现EDI直连的第一步,有着不可或缺的重要作用。接下来主要介绍一下GP在与供应商进行连接测试时遇到的问题。

GP与供应商分别配置完成了AS2连接信息,确认无误后GP向供应商发送测试文件,供应商成功接收并向GP发送了测试文件,但是,却没有出现发送成功的提示,并显示报错信息:“不知道这样的主机”。于是,知行的实施工程师开始排查问题。在保证已准确无误地配置了GP提供的AS2配置信息后,初步排查GP提供的URL是否有问题,用ping、tracert命令去访问GP的IP地址,出现“请求超时”的错误。于是跟GP确认URL是否有更新,供应商的IP地址是否已加入到GP的访问信任列表,确认URL无误,IP地址已添加到白名单后,尝试用Ping命令解析GP的URL,得到一个IP地址,用这个IP地址替换掉AS2 Settings中URL里的域名,再次尝试发送测试文件,出现报错:“Internal Service Error”。由于HTTP报错信息难以直接定位原因,尝试使用抓包工具RawCap抓取IP数据包来分析原因。

首先,在本地安装好RawCap,可选取以下三种方式来抓取数据包:

1. 打开RawCap,输入RawCap.exe 5 dumpfile.pcap;

2. 打开RawCap,RawCap.exe IP地址 dumpfile.pcap;

3. 在命令行中直接输入RawCap.exe。

需要注意的是,默认保存的文件名为dumpfile.pcap,使用Ctrl+C来停止抓包。此时可以在RawCap的同级目录下看到已保存的dumpfile.pcap文件,用wireshark打开,分析抓取到的数据包。

如上图所示,查看数据包信息得到:“Service Not Found. The request may have been sent to an invalid URL, or intended for an unsupported operation”。询问GP报错原因,再次确认URL提供是否正确。GP表示他们的其他供应商可以正常连接,且提供的URL没有任何问题。

此前的排查都是基于GP的配置或URL可能有问题进行的,排查无果后,着手从本地排查。

首先,怀疑可能是没有清理DNS缓存引起的。由于安装RSSBus时勾选了“Run as Windows Service”,查看任务管理器中RSSbus的详细信息发现,以Windows Service 去运行RSSBus的用户和使用浏览器去运行RSSBus的用户是不同的,这意味着Windows Service去运行的RSSBus用户的DNS解析可能会有问题。任务管理器界面如下图所示:

对此,在命令行窗口中输入命令:ipconfig /flushdns 刷新DNS解析的缓存。操作后问题依然存在。

查看Host文件,发现没有指定要访问的IP地址。在Host文件中添加GP的IP地址,重新发送测试文件,出现报错信息:“time out”,根据第一步排查的方法,在RSSBus中取消勾选“Run as Windows Service”,重新发送测试文件,显示成功。

您或许会有疑问,为什么此前用URL解析出来的IP地址配置在AS2 Settings里时,会出现“Internal Service Error”的报错呢?可能的原因是,IP地址只对应一个前端服务器,只是用来监听80端口,但IP地址对应的下一层可能有多种Service,仅仅用IP地址去访问的话无法确定具体要访问哪个Service,所以抓包信息中有报错:“Service Not Found”。

以上便是GP和供应商进行EDI直连AS2连接测试遇到的问题及解决思路。

任何关于EDI的问题,欢迎评论或私信。

注:文案部分内容来源于网络,版权归原创作者所有,如有侵犯到您的权益,请您联系我们进行删除,给您带来困扰,我们深感抱歉。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档