Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Ruby连接到需要用户名、密码和安全证书(.cer文件)才能连接的Microsoft SOAP web服务_C#_Ruby_Web Services_Soap_Savon - Fatal编程技术网

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

C# 使用Ruby连接到需要用户名、密码和安全证书(.cer文件)才能连接的Microsoft SOAP web服务,c#,ruby,web-services,soap,savon,C#,Ruby,Web Services,Soap,Savon,首先介绍一下背景: 我已经成功地使用C#连接到Microsoft SOAP web服务。要使用此web服务,我必须在C#代码中提供用户名和密码。我还必须在系统证书的“根证书颁发机构”部分安装一个安全证书(采用.cer格式)。该服务的地址是一个安全的“https://”地址 (顺便说一下,我用来连接服务的C#类是使用命令行工具“svcutil.exe”自动生成的) 这是我的问题: 如何使用Ruby连接到此web服务?我甚至不知道从哪里开始。我不知道我的.cer文件、用户名和密码应该放在哪里。有什么

首先介绍一下背景:

我已经成功地使用C#连接到Microsoft SOAP web服务。要使用此web服务,我必须在C#代码中提供用户名和密码。我还必须在系统证书的“根证书颁发机构”部分安装一个安全证书(采用.cer格式)。该服务的地址是一个安全的“https://”地址

(顺便说一下,我用来连接服务的C#类是使用命令行工具“svcutil.exe”自动生成的)

这是我的问题:

如何使用Ruby连接到此web服务?我甚至不知道从哪里开始。我不知道我的.cer文件、用户名和密码应该放在哪里。有什么想法吗

更多信息:


通过使用for C#,我能够准确地找出发送了什么XML消息,以及接收了什么XML消息。这些XML非常简单,但是“https://”从未出现在其中,即使web服务的地址是https。我不知道这是为什么。我认为从服务发送和接收消息与实际连接到服务只是一个独立的问题。

我可以热情推荐使用Ruby处理SOAP

我假设您正在处理的是HTTP基本身份验证,在这种情况下,它应该非常简单。只是:

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文档发布到正确的url即可。我在使用httpi ntlm处理身份验证方面有很好的经验。

您在这里谈论的是传输安全,而不是消息安全。您在Windows服务器上安装的证书正用于加密SSL连接。使用Ruby需要做的是确保在建立连接时,与您安装的证书对应的客户端证书用于加密您使用的SSL连接

这是半个服务器管理(SSL证书安装)和半个代码(确保使用正确的证书)


我不是Ruby专家,但我认为您需要一些东西来在连接中使用x509证书。WCF使用一个配置文件来做同样的事情,而传统的ASMX服务使用代码来做这件事。

你能将地址发布到wsdl或其要点/粘贴吗?@rubiii不幸的是,我不能公开发布…@Enchilada:你能提供另一个表现出同样行为的web服务吗?@NiklasB.&鲁比和其他人:不幸的是,我不知道还有其他这样的服务。我想这是一个困难的局面。你们中的一些人可以通过电子邮件进行私人讨论吗?也许是一些咨询工作…@Enchilada:如果你包括基本的C#代码,也许还有客户端和服务器之间的通信转储,可能会有所帮助。当然,如果代码无法测试,那么您就不能期望得到完美的答案。解析WSDL文件时似乎存在一些问题。这是一个有点奇怪的文件——它引用了其他https位置的一些其他WSDL文件。所有其他的wsdl解析器(微软的东西除外),比如php和cocoa解析器也会失败,我认为这是因为这个wsdl文件很奇怪。因此:您能否在回答中附加我如何首先连接到服务,然后向它发送一个原始XML查询并从中获取原始XML查询?如果我无法解析WSDL(在Microsoft的.NET之外),这可能就是我的方法。我更新了我的答案。只是出于好奇,你在找什么样的服务?你是否可以私下帮我连接到该服务?我怎样才能和你联系?