Savon:使用wsse auth的WCF Soap服务:EndpointDispatcher上的AddressFilter不匹配

时间:2012-10-26 06:16:20

标签: ruby wcf soap savon

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

它是一个WCF soap服务,WSSE通过https验证。这是我试过的代码:

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:DestinationUnreachableThe To with'''不能在处理   接收器,由于EndpointDispatcher上的AddressFilter不匹配。   检查发送方和接收方的EndpointAddresses   同意。

  

由于a,无法在接收方处理带有To'的消息   AddressFilter在EndpointDispatcher上不匹配。检查一下   发送方和接收方的EndpointAddresses同意。 (萨翁:: SOAP ::故障)

请帮我解决这个问题

1 个答案:

答案 0 :(得分: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}"})