ruby - 我如何编写一个简单的 SOAP 服务器脚本以根据传入请求的命名空间返回静态 XML?

标签 ruby xml perl soap tcp

我需要对一个应用程序做一些测试 SOAP 调用第三方应用程序然后处理结果。 我想将特定数据从 模拟第三方应用程序的程序。

我意识到我真正需要的只是拥有一个服务器进程 1) 接受来自被测应用程序的传入 SOAP 调用 2) 确定传入 SOAP 调用中使用的 namespace 3) 使用基于该 namespace 的静态 XML 返回 SOAP 响应。

我原以为我会简单地使用 Ruby 的 SOAP::RPC::StandaloneServer,但那期望 构造函数中的单个 namespace ,所以我很困惑(我确实考虑过 猴子修补处理命名空间的代码,但这看起来很难)。 然后,我想我应该尝试使用 Ruby 的 TCPServer。我得到了尽可能 当我意识到我不知道如何正确返回 以正确的 SOAP 方式使用适当的 XML。

    require 'socket'

    server = TCPServer.new('127.0.0.1', 9800)
    loop {
      client = server.accept
      # This is for illustration only, it's clearly wrong
      while line = client.gets
        if line =~ /urn:foo/
          # return the foo xml in the correct SOAP fashion
        elsif line =~ /urn:bar/
          # return the bar xml in the correct SOAP fashion
        end
      end
      client.close
    }
    trap('INT') { exit }

请注意,被测应用程序不是 Ruby 应用程序,它是 对测试不友好。另请注意,我很乐意考虑另一种解决方案 (例如 Perl 解决方案)如果它更容易——我刚开始使用 Ruby,因为 我对此有一点经验。

最佳答案

您可能想试试这个,它几乎完全符合您的要求。 http://www.soapui.org/

关于ruby - 我如何编写一个简单的 SOAP 服务器脚本以根据传入请求的命名空间返回静态 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6848446/

相关文章:

python - 是否可以运行存储在 xml cdata 中的 python 代码?

Android: strings.xml 自动显示standalone ="no"

perl - 使用 LWP::Authen::OAuth2 访问受 OAuth2 保护的 Google API 时出现问题

ruby-on-rails - 逐行搜索 XML

ruby-on-rails - Rails 中类似 Smarty Pants 的功能

java - 获取 wso2 esb 中内存消息存储中的消息数

perl - 已创建类型约束 'XYZ'

regex - 在 Excel 单元格上使用 Perl 和 Regex 来组合任何不带空格的前导数字

ruby-on-rails - 如何使用 RVM 或其他方式添加本地自定义 gem?

ruby-on-rails - Rails CSV 生成器 - 2019 年 6 月 17 日星期一的未定义方法 `collect' 14 :16:10 CEST +02:00:Time in