我正在尝试使用Savon创建SOAPClient - rubygem。
它是一个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 ::故障)
请帮我解决这个问题
答案 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}"})