def call(name, *params)
op_info = lookup_operation(name)
mapping_opt = create_mapping_opt
req_header = create_request_header
req_body = SOAPBody.new(
op_info.request_body(params, @mapping_registry,
@literal_mapping_registry, mapping_opt)
)
reqopt = create_encoding_opt(
:soapaction => op_info.soapaction || @soapaction,
:envelopenamespace => @options["soap.envelope.requestnamespace"],
:default_encodingstyle =>
@default_encodingstyle || op_info.request_default_encodingstyle,
:use_default_namespace =>
op_info.use_default_namespace || @use_default_namespace
)
resopt = create_encoding_opt(
:envelopenamespace => @options["soap.envelope.responsenamespace"],
:default_encodingstyle =>
@default_encodingstyle || op_info.response_default_encodingstyle
)
env = route(req_header, req_body, reqopt, resopt)
if op_info.response_use.nil?
return nil
end
raise EmptyResponseError unless env
receive_headers(env.header)
begin
check_fault(env.body)
rescue ::SOAP::FaultError => e
op_info.raise_fault(e, @mapping_registry, @literal_mapping_registry)
end
if @return_response_as_xml
resopt[:response_as_xml]
else
op_info.response_obj(env.body, @mapping_registry,
@literal_mapping_registry, mapping_opt)
end
end