c# - 使用 Ruby 连接到需要用户名、密码和安全证书(.cer 文件)才能连接到它的 Microsoft SOAP Web 服务

标签 c# ruby web-services soap savon

先介绍一下背景:

我已经成功地使用 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/

相关文章:

html - 我需要在 html.erb ruby​​ 中创建动态选择

visual-studio - 如何在附加到 Visual Studio 中的进程时运行测试

android - 无法将 ksoap 对象绑定(bind)到 Android 中的 ArrayList

c# - T4 模板中无法识别 EnvDTE 类型

c# - 我怎样才能得到所有字符串 "greater"的列表而不是 List<string> 中的特定值?

c# - 将 OData Queryable 与存储库一起使用?

ruby - 为什么将方法作为参数 (&block) 传递不起作用?

ruby - value1 < value2 < value3 的简写

java - 当 HashMap 作为参数传递时生成 WebService 时出现异常

c# - Google APIs vs Google Play vs Intel x86 vs Android TV vs Wear OS Intel x86 系统图像差异