1

我正在尝试使用 Savon - ruby​​gem 创建 SOAPClient。

它是一个 WCF 肥皂服务,通过 https 进行 WSSE 身份验证。这是我尝试过的代码:

require 'savon'

client = Savon::Client.new do
    wsdl.document = "https://svc.sxxxxxify.com:8081/ConfSet.svc?wsdl"
    config.soap_version = 2
    wsse.credentials "aa5@xxasxsaxsh.com", "test123"
end

p client.wsdl.soap_actions
response = client.request :get_user_clients
p response

但我得到这个错误:

http://www.w3.org/2005/08/addressing/soap/fault2012-10-26T06:07:42.247Z2012-10-26T06:12:42.247Zs:Sendera:DestinationUnreachable 无法处理带有 To '' 的消息接收器,由于 EndpointDispatcher 的 AddressFilter 不匹配。检查发送方和接收方的 EndpointAddresses 是否一致。

.

由于 EndpointDispatcher 的 AddressFilter 不匹配,接收方无法处理带有 To '' 的消息。检查发送方和接收方的 EndpointAddresses 是否一致。(萨文::SOAP::故障)

请帮我解决这个问题

4

1 回答 1

1

我遇到了一些问题。我通过提供标题条目和新命名空间解决了“To”问题。不过,“Action”标头也是必需的,我只是在检查 SoapUI 日志后才发现这一点。这对我有用:

  @service_url = 'https://svc.sxxxxxify.com:8081/ConfSet.svc/service'
  @action = 'your_action'
  @client = Savon.client(:wsdl => "#{@service_url}?wsdl", :soap_version => 2, 
    :namespaces => {"xmlns:x" => "http://www.w3.org/2005/08/addressing"}, 
    :soap_header => {"x:To" => @service_url, "x:Action" => "http://tempuri.org/#{@action}"})
于 2013-08-28T19:39:52.850 回答