Howto add automatically a soap header in soap4r?


#1

Hi all,
I must access a webservices that expect the SOAP action as a soap
header. I want to add this soap header automatically but I dont know
where to hook in.
My actual solution is to create a header and remove it after consuming.
The code looks like this:

require ‘SystemDriver.rb’
require ‘soap/header/simplehandler’

define the action soap header

class ActionHandler < SOAP::Header::SimpleHandler
HeaderName =
XSD::QName.new(‘http://schemas.xmlsoap.org/ws/2004/08/addressing/’,'Action’)
@m_action

def initialize(action)
super(HeaderName)
@m_action = action
end

def on_simple_outbound
@m_action
end
end

create the connection / interface

endpoint_url = “http://localhost:1500
obj = Public.new( endpoint_url )

enable debug output

obj.wiredump_dev = STDERR if $DEBUG

ns = ‘http://mynamespace.com/my/path

getIdentity

create action soap header

actionHandler = ActionHandler.new( ns + ‘/getIdentity’ )

add action soap header

obj.headerhandler.add( actionHandler )

do the request

emptyRequest = nil
puts 'getIdentity: ’ + obj.getIdentity(emptyRequest).identityString
puts ‘’

remove action soap header for reusing the connection / interface

obj.headerhandler.delete( actionHandler )