---
name: "SOAP::WSDL::Factory::Transport"
section: "3pm"
platform: "linux"
package: "libsoap-wsdl-perl"
version: "3.004-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SOAP::WSDL::Factory::Transport"
---

# SOAP::WSDL::Factory::Transport(3pm)

Factory for retrieving transport objects

## NAME

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

## 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__ );
```

## 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.

## WRITING YOUR OWN TRANSPORT CLASS

### Registering a transport class

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()**.

### Transport plugin package layout

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

### Methods to implement

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.

## LICENSE AND COPYRIGHT

Copyright 2004-2007 Martin Kutter. All rights reserved.

This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself

## AUTHOR

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

## 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 $
```
