先介绍一下背景:
我已经成功地使用 C# 连接到 Microsoft SOAP Web 服务。要使用此 Web 服务,我必须在 C# 代码中提供用户名和密码。我还必须将安全证书(.cer 格式)安装到系统证书的“根证书颁发机构”部分。该服务的地址是一个安全的“https://”地址。
(顺便说一句,我用来连接服务的 C# 类是使用命令行工具“svcutil.exe https://address.of.service”自动为我生成的)
这是我的问题:
如何使用 Ruby 连接到此 Web 服务?我什至不知道从哪里开始。我不知道我的 .cer 文件、用户名和密码应该放在哪里。有什么想法吗?
更多信息:
使用 these instructions对于 C#,我已经能够准确地找出发送的 XML 消息以及接收回的 XML 消息。这些 XML 非常简单,但是“https://”从未出现在其中,即使 Web 服务的地址是 HTTPS。我不确定为什么会这样。我想从服务发送和接收消息只是与实际连接服务不同的事情。
最佳答案
我可以热烈推荐使用 Savon在 Ruby 中处理 SOAP!
我假设您正在处理的是 HTTP Basic 身份验证,在这种情况下它应该非常简单。只是:
client = Savon::Client.new do
http.auth.basic "user_name", "password"
# Use a local wsdl
wsdl.document = File.expand_path("../wsdl/ebay.xml", __FILE__)
# or from internet
wsdl.document = "http://service.example.com?wsdl"
# to list SOAP actions
client.wsdl.soap_actions
end
(这只是我的想法,所以可能有点偏差) 阅读我发布的链接,如果您不明白,请给我发消息。 :)
证书文件用于您的计算机接受您要连接的服务器的身份。如果您已将它安装到您的计算机上,我认为您无需在此部分做任何其他事情。
编辑
如果您不能使用 WSDL 文件,您将不得不手动构建 xml,这非常难看,但如果别无他法,则可能。 Nokogiri 可用于构建 xml 文档,然后您只需将 xml 文档 POST 到正确的 url 即可。我在使用 httpi-ntlm 处理身份验证方面有很好的经验。
关于c# - 使用 Ruby 连接到需要用户名、密码和安全证书(.cer 文件)才能连接到它的 Microsoft SOAP Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9894316/