Forum: Ruby Howto add automatically a soap header in soap4r?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Henning Panke (Guest)
on 2007-06-22 15:11
(Received via mailing list)
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/'...)
   @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 )
This topic is locked and can not be replied to.