logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

SOAP::WSDL::Factory::Transport - Factory for retrieving transport objects

Author

       Martin Kutter <martin.kutter fen-net.de>

Description

       SOAP::WSDL::Transport serves as factory for retrieving transport objects for SOAP::WSDL.

       The actual work is done by specific transport classes.

       SOAP::WSDL::Transport tries to load one of the following classes:

       •   the class registered for the scheme via register()

       •   the SOAP::Lite class matching the scheme

       •   the SOAP::WSDL class matching the scheme

Methods

register
        SOAP::WSDL::Transport->register('https', 'MyWickedTransport');

       Globally registers a class for use as transport class.

   proxy
        $trans->proxy('http://soap-wsdl.sourceforge.net');

       Sets the proxy (endpoint).

       Returns the transport for this protocol.

   set_transport
       Sets the current transport object.

   get_transport
       Gets the current transport object.

Name

       SOAP::WSDL::Factory::Transport - Factory for retrieving transport objects

Repository Information

        $Rev: 851 $
        $LastChangedBy: kutterma $
        $Id: Transport.pm 851 2009-05-15 22:45:18Z kutterma $
        $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $

perl v5.36.0                                       2022-10-14                SOAP::WSDL::Factory::Transport(3pm)

Synopsis

        # from SOAP::WSDL::Client:
        $transport = SOAP::WSDL::Factory::Transport->get_transport( $url, @opt );

        # in transport class:
        package MyWickedTransport;
        use SOAP::WSDL::Factory::Transport;

        # register class as transport module for httpr and https
        # (httpr is "reliable http", a protocol developed by IBM).
        SOAP::WSDL::Factory::Transport->register( 'httpr' , __PACKAGE__ );
        SOAP::WSDL::Factory::Transport->register( 'https' , __PACKAGE__ );

Writing Your Own Transport Class

Registeringatransportclass
       Transport classes must be registered with SOAP::WSDL::Factory::Transport.

       This  is  done  by  executing the following code where $scheme is the URL scheme the class should be used
       for, and $module is the class' module name.

        SOAP::WSDL::Factory::Transport->register( $scheme, $module);

       To auto-register your transport class on loading, execute register() in your tranport class (see SYNOPSIS
       above).

       Multiple protocols or multiple classes are registered by multiple calls to register().

   Transportpluginpackagelayout
       You may only use transport classes whose name  is  either  the  module  name  or  the  module  name  with
       '::Client' appended.

   Methodstoimplement
       Transport   classes  must  implement  the  interface  required  for  SOAP::Lite  transport  classes  (see
       SOAP::Lite::Transport for details, SOAP::WSDL::Transport::HTTP for an example).

       To provide this interface, transport modules must implement the following methods:

       •   new

       •   send_receive

           Dispatches a request and returns the content of the response.

       •   code

           Returns the status code of the last send_receive call (if any).

       •   message

           Returns the status message of the last send_receive call (if any).

       •   status

           Returns the status of the last send_receive call (if any).

       •   is_success

           Returns true after a send_receive was successful, false if it was not.

       SOAP::Lite requires transport modules to pack client and server classes in one file, and to  follow  this
       naming scheme:

        Module name:
          "SOAP::Transport::" . uc($scheme)

        Client class (additional package in module):
          "SOAP::Transport::" . uc($scheme) . "::Client"

        Server class (additional package in module):
          "SOAP::Transport::" . uc($scheme) . "::Client"

       SOAP::WSDL does not require you to follow these restrictions.

       There is only one restriction in SOAP::WSDL:

       You  may  only  use  transport  classes  whose  name  is  either  the module name or the module name with
       '::Client' appended.

       SOAP::WSDL will try to instantiate an object of your transport class with '::Client'  appended  to  allow
       using transport classes written for SOAP::Lite.

       This  may  lead  to  errors  when a different module with the name of your transport module suffixed with
       ::Client is also loaded.

See Also