SAP CPI-通过集成流转发原始图像数据

2020-08-20 10:11发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们, 在一个用例中,我正在...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们,

在一个用例中,我正在调用CPI​​终结点,并传入托管的jpeg图像的URL(例如这样: http://braiden.net/images/img.jpg ),然后我使用请求-回复向该URL发出GET请求,以将原始图像数据放入消息正文中。/p>

我已经成功地构建了这部分。 现在,我在消息正文中有了此原始图像数据,我想对SAP Optical Character Recognition服务进行请求-答复(此处记录)。

此API要求请求的格式如下:

•内容类型:多部分/表单数据; boundary = CPI

•APIKey:[some-valid-api-key]

•内容长度:[内容长度]

  • 必须包含一个多部分的表单主体,并且其中一个名为"文件"的字段包含图像数据

由于对此API的要求,我添加了一个内容修饰符,以删除所有不必要的标头(可能是从第一个请求中引入的标头)并添加了必需的标头。 (似乎CPI已自动添加" Content-Length"标头,并且任何更改/删除此标头的尝试均无效。)

在此内容修饰符内,我还在主体中添加了以下内容作为表达式:

-CPI
 内容处置:表单数据;  name ="文件";  filename =" img.jpg"
 内容类型:图片/jpeg

 $ {body}
 --CPI-

这将原始图像数据包装有multipart/form-data内容类型所需的必要边界信息。 (这种包装原始数据的方法是从此博客文章。)

这是我iflow的照片:

点击此处,将其下载为 一个zip文件。

我注意到的一件事是,从Postman发送请求与从CPI发送请求时,Content-Length标头的值完全不同,而且正如我已经提到的,似乎没有办法 手动将此标头设置为其他值。

我还注意到,在查看CPI发出的原始HTTP请求时,图像数据与使用REST客户端发送图像数据时的图像数据略有不同。 CPI发出的请求中经常缺少一些字符。

这是请求的两个示例,一个是从REST客户端发送的,另一个是从CPI发送的。 REST客户端的请求在发送到OCR API时有效,但CPI的请求无效(返回500错误)。

REST客户端请求

CPI请求

同样,差异是Content-Length标头值和CPI请求中的一些丢失字符。

以下是一些问题:

1。 使用请求答复获取原始图像数据是将图像存储在消息正文中的正确方法,还是有更好的方法?

2。 如何正确地将此图像发送到OCR API? 到目前为止,我仅从OCR API服务器收到500个错误。

3。 我应该使用MIME Multipart编码器还是脚本来修改编码? 如果可以,怎么办?

TL; DR:我想使用CPI将图像发送到光学字符识别API。 关于我可能做错了什么以及为什么我的请求不起作用的任何想法?

任何帮助将不胜感激!

(16.9 kB)
4条回答
SAP浪
2020-08-20 10:14

您好,Braiden Psiuk

在Groovy中,双引号的使用允许字符串中的内插表达式。 这允许使用更紧凑的代码(与Java相比)来编写包含动态填充变量(即上述情况下的边界)的字符串。 这种用双引号引起来的字符串在Groovy中称为 GStrings -确实是这样命名的! :)

既然现在已经回答了该线程,您是否也可以关闭该线程?

最后,一旦建立并运行了端到端方案,将 如果您可以写一篇有关它的博客文章,那就太好了。 这是一个非常有趣的用例,它真正展示了CPI中的集成能力,并且对于将来正在研究此类方案的其他人也将是一个很好的参考材料。

注意

Eng Swee

一周热门 更多>