【发布时间】:2018-05-20 18:16:00
【问题描述】:
几年前,我编写了一些在 Windows Server 2000 上运行的 Perl SOAP::Transport::HTML 服务器。在那台机器上,当服务的返回字符串包含可能破坏肥皂信封的字符时,perl 自动将字符串编码为 base64,然后客户处理。
最近,脚本已移至运行 Server 2008 和 Perl 5.22.1 的机器上。该服务工作正常,除非返回字符串包含这样的字符:字符串未编码并且 SOAP 信封返回到客户端为空。
如何强制我的返回字符串为 base64?当然我可以使用 MIME::base64 对字符串进行编码,但是 SOAP 信封仍然指示类型文本,并且在客户端没有正确转换。
use SOAP::Transport::HTTP;
SOAP::Transport::HTTP::CGI
-> dispatch_to('MyMod')
-> handle;
【问题讨论】:
-
我不了解 perl,但是在使用 node-soap 时我得到了错误的内容类型,最后我不得不手动构建 SOAP 请求。可悲的是,并非所有语言都以相同的方式处理 SOAP,并且某些模块所期望的功能根本无法由其他语言的模块提供。最终的长期解决方案:使用 REST。
标签: perl web-services soap