我发布这篇博文是为了分享我在通过SAP PI 7.31 SPS 19 REST适配器将我们的SAP系统与基于REST的第三方系统集成时遇到的一些挑战。
场景:
SAP向第三方系统(通过SAP PI)发送同步HTTP(GET和post)请求,并期望第三方系统作出响应。
问题1:HTTP 415不支持的媒体类型异常
所有HTTP-GET请求都正常工作。从SAP触发的HTTP-POST消息失败,出现HTTP 415不支持的媒体类型异常。
根本原因:
来自第三方应用程序的日志表明来自SAP PI REST接收器适配器的POST请求在第三方失败,因为字符集被附加到内容类型HTTP头参数
即Content Type=application/json;charset=UTF-8
从sapi的角度来看,内容类型在REST接收器适配器配置中定义为application/json,PI适配器日志显示RESTOUT\u HTTP\u HEADER Content Type为application/json.
解决方案:
问题在实施SAP Note"2456232–无法发送没有charset值的HTTP Content Type HEADER"后得到解决。
问题2:REST请求中的特殊字符
带有特殊字符的REST请求,如&,',/,阿里大数据应用平台,失败。
例如,M&S
MARSK&SPENCERS。
解决方案:
实施2215187–使用PI REST适配器对查询字符串进行URL编码的选项
将模块参数EncodeURL设置为false。
注意:实施此修复后,所有带空格的消息都失败。
即,怎么选购云服务器,M&S工作正常,云服务器怎么样,但MARKS&SPENCERS失败。
此问题得到解决在用%26替换和用+.替换空格后解决
即标记+%26+Spencers.
请在下面的列表中找到更多特殊字符和使用的代码
问题3:来自第三方的HTTP错误响应没有传递到源(即SAP)
来自第三方的非200 HTTP(错误)响应消息,如HTTP 415,淘客返利,503,500,404,403在SAP PI和未送达源(即SAP)
解决方案:
通过邮递员测试服务。获取第三方错误响应结构并将其嵌入PI响应结构(DT)。
在接收器适配器配置->错误处理
源=HTTP状态码
选择复选框"选择不匹配"
消息内容={HTTP\U结果}
结论:SAP为REST适配器发布了许多补丁。建议在开始开发之前检查补丁级别,品高云,以避免这些问题。