我需要对一个应用程序做一些测试 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/