Howto add automatically a soap header in soap4r?

H

Henning Panke

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 )
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top