Class: Savon::Client
- Inherits:
-
Object
- Object
- Savon::Client
- Defined in:
- lib/savon/client.rb
Overview
Savon::Client
Savon::Client is the main object for connecting to a SOAP service. It includes methods to access both the Savon::WSDL::Document and HTTPI::Request object.
Instance Attribute Summary collapse
-
#soap ⇒ Object
readonly
Returns the
Savon::SOAP::XML
object.
Instance Method Summary collapse
-
#http ⇒ Object
Returns the
HTTPI::Request
. -
#initialize(&block) ⇒ Client
constructor
Initializes the Savon::Client for a SOAP service.
-
#request(*args, &block) ⇒ Object
Executes a SOAP request for a given SOAP action.
-
#wsdl ⇒ Object
Returns the
Savon::WSDL::Document
. -
#wsse ⇒ Object
Returns the
Savon::WSSE
object.
Constructor Details
#initialize(&block) ⇒ Client
Initializes the Savon::Client for a SOAP service. Accepts a block
which is evaluated in the context of this object to let you access the wsdl
, http
, and wsse
methods.
Examples
# Using a remote WSDL
client = Savon::Client.new { wsdl.document = "http://example.com/UserService?wsdl" }
# Using a local WSDL
client = Savon::Client.new { wsdl.document = "../wsdl/user_service.xml" }
# Directly accessing a SOAP endpoint
client = Savon::Client.new do
wsdl.endpoint = "http://example.com/UserService"
wsdl.namespace = "http://users.example.com"
end
32 33 34 35 |
# File 'lib/savon/client.rb', line 32 def initialize(&block) process 1, &block if block wsdl.request = http end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object (private)
Handles calls to undefined methods by delegating to the original block binding.
151 152 153 154 |
# File 'lib/savon/client.rb', line 151 def method_missing(method, *args, &block) super unless original_self original_self.send method, *args, &block end |
Instance Attribute Details
#soap ⇒ Object
Returns the Savon::SOAP::XML
object. Please notice, that this object is only available in a block given to Savon::Client#request
. A new instance of this object is created per SOAP request.
55 56 57 |
# File 'lib/savon/client.rb', line 55 def soap @soap end |
Instance Method Details
#http ⇒ Object
Returns the HTTPI::Request
.
43 44 45 |
# File 'lib/savon/client.rb', line 43 def http @http ||= HTTPI::Request.new end |
#request(*args, &block) ⇒ Object
Executes a SOAP request for a given SOAP action. Accepts a block
which is evaluated in the context of this object to let you access the soap
, wsdl
, http
and wsse
methods.
Examples
# Calls a "getUser" SOAP action with the payload of "<userId>123</userId>"
client.request(:get_user) { soap.body = { :user_id => 123 } }
# Prefixes the SOAP input tag with a given namespace: "<wsdl:GetUser>...</wsdl:GetUser>"
client.request(:wsdl, "GetUser") { soap.body = { :user_id => 123 } }
# SOAP input tag with attributes: <getUser xmlns:wsdl="http://example.com">...</getUser>"
client.request(:get_user, "xmlns:wsdl" => "http://example.com")
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/savon/client.rb', line 70 def request(*args, &block) raise ArgumentError, "Savon::Client#request requires at least one argument" if args.empty? self.soap = SOAP::XML.new preconfigure (args) process &block if block soap.wsse = wsse response = SOAP::Request.new(http, soap).response response.http.headers response end |
#wsdl ⇒ Object
Returns the Savon::WSDL::Document
.
38 39 40 |
# File 'lib/savon/client.rb', line 38 def wsdl @wsdl ||= WSDL::Document.new end |
#wsse ⇒ Object
Returns the Savon::WSSE
object.
48 49 50 |
# File 'lib/savon/client.rb', line 48 def wsse @wsse ||= WSSE.new end |