有一个Web服务正在外部系统中运行。Web服务需要一个XML文件,该文件是Base64编码的。
在我的ABAP程序中,我有一个XML,我想在XSTRING变量中发布到Web服务。
这里的问题是,字符串的Base64版本和包含相同字符串的文件本质上是不同的。
我知道的最直接的解决方案是将字符串写入文件,然后将文件转换为Base64并发布到Web服务。这里的问题是,我必须对XML字符串过于敏感,即使是临时存储在文件系统中。
所以我的问题是:
有没有一种方法可以在运行时在内存中创建一个文件,将我拥有的XML添加到内存中的文件中,并最终将其转换为Base64字符串,所有这些都在运行时不使用实际的文件系统。
DATA: lv_xstring TYPE xstring.
xstring = '<document>some xml data</document>'.
xstring-->转换为内存中的文件-->转换为Base64字符串
您可以在ABAP中将字符串或xstring直接转换为base64。检查SCMS_BASE64_ENCODE_STR FM的xtsring到BASE64字符串转换。
另一方面,通常二进制数据(xstring(在SOAP主体中作为base64编码的字符串进行传输。因此,您可能不需要将其转换为base64,只需将xml转换为xstring,然后将其分配给方法参数即可。