Working Code:
wsdl = Savon.client(
wsdl:APP_CONFIG['exam_one']['wsdl'],
env_namespace:'soapenv',
namespace_identifier:'eos',
logger:Logger.new("#{Rails.root}/log/exam_one_or01.log", 1, (2097152*10))
)
message = {
:username => APP_CONFIG['exam_one']["username"],
:password => APP_CONFIG['exam_one']["password"],
:destinationID => "C1",
:payload => self.to_s
}
@response = wsdl.call :deliver_exam_one_content, message:message, raise_errors:false
The solution:
The problem, it turns out, was that Savon was raising an error because of the 400 response, and as a consequence of the error, it was not logging its own request. (Poor design choice, I think.)
The solution was to include the option raise_errors: false
in the params for call
on the clientclient.
To get the namespaces I needed, I had to include: env_namespace:'soapenv', namespace_identifier:'eos'
. (I know, I didn't mention the latter issue in my original question, but that's how to namespace items in the payload.)
(+1 to Steven for a correct demonstration of env_namespace
.)