【问题标题】:Perl SOAP server no longer returning base64Perl SOAP 服务器不再返回 base64
【发布时间】: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


【解决方案1】:

我最终使用 MIME::base64 对字符串进行编码,并对响应进行了处理,以便客户端将响应字符串解码为 base64,即使肥皂响应继续指示类型字符串。对我有用——对于这个非常具体的应用程序来说已经足够了。

仍然找不到如何强制 perl 对响应进行编码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 2021-04-06
    • 2013-04-08
    • 2021-09-11
    • 1970-01-01
    相关资源
    最近更新 更多