ActiveState!

ActivePerl Documentation
Table of Contents

(Usage Statistics)
(about this ver)


* Getting Started
    * Welcome To ActivePerl
    * Release Notes
    * Readme
    * ActivePerl Change Log
* Install Notes
    * Linux
    * Solaris
    * Windows
* ActivePerl Components
    * Overview
    * PPM
    * Windows Specifics
       * OLE Browser
       * PerlScript
       * Perl for ISAPI
       * PerlEZ
* ActivePerl FAQ
    * Introduction
    * Availability & Install
    * Using PPM
    * Docs & Support
    * Windows Specifics
       * Perl for ISAPI
       * Windows 9X/NT/2000
       * Quirks
       * Web Server Config
       * Web programming
       * Programming
       * Modules & Samples
       * Embedding & Extending
       * Using OLE with Perl
* Windows Scripting
    * Active Server Pages
    * Windows Script Host
    * Windows Script Components

Core Perl Documentation


* perl
* perlfaq
* perltoc
* perlbook

* perlsyn
* perldata
* perlop
* perlreftut
* perldsc
* perllol

* perllexwarn
* perldebug

* perlrun
* perlfunc
* perlopentut
* perlvar
* perlsub
* perlmod
* perlpod

* perlstyle
* perlmodlib
* perlmodinstall
* perltrap
* perlport
* perlsec

* perlref
* perlre
* perlform
* perllocale
* perlunicode

* perlboot
* perltoot
* perltootc
* perlobj
* perlbot
* perltie

* perlipc
* perlnumber
* perlfork
* perlthrtut

* perldiag
* perlfaq1
* perlfaq2
* perlfaq3
* perlfaq4
* perlfaq5
* perlfaq6
* perlfaq7
* perlfaq8
* perlfaq9

* perlcompile

* perlembed
* perlxstut
* perlxs
* perlguts
* perlcall
* perlfilter
* perldbmfilter
* perlapi
* perlintern
* perlapio
* perltodo
* perlhack

* perlhist
* perldelta
* perl5005delta
* perl5004delta

* perlamiga
* perlcygwin
* perldos
* perlhpux
* perlmachten
* perlos2
* perlos390
* perlvms
* perlwin32

Pragmas


* attributes
* attrs
* autouse
* base
* blib
* bytes
* charnames
* constant
* diagnostics
* fields
* filetest
* integer
* less
* lib
* locale
* lwpcook
* open
* ops
* overload
* perllocal
* re
* sigtrap
* strict
* subs
* utf8
* vars
* warnings

Libraries


* ActivePerl
    * DocTools
        * TOC
            * RDF
* AnyDBM_File
* Archive
    * Tar
* AutoLoader
* AutoSplit
* B
    * Asmdata
    * Assembler
    * Bblock
    * Bytecode
    * C
    * CC
    * Debug
    * Deparse
    * Disassembler
    * Lint
    * Showlex
    * Stackobj
    * Terse
    * Xref
* Benchmark
* Bundle
    * LWP
* ByteLoader
* Carp
    * Heavy
* CGI
    * Apache
    * Carp
    * Cookie
    * Fast
    * Pretty
    * Push
    * Switch
* Class
    * Struct
* Compress
    * Zlib
* Config
* CPAN
    * FirstTime
    * Nox
* Cwd
* Data
    * Dumper
* DB
* Devel
    * DProf
    * Peek
    * SelfStubber
* Digest
    * HMAC
    * HMAC_MD5
    * HMAC_SHA1
    * MD2
    * MD5
    * SHA1
* DirHandle
* Dumpvalue
* DynaLoader
* English
* Env
* Errno
* Exporter
    * Heavy
* ExtUtils
    * Command
    * Embed
    * Install
    * Installed
    * Liblist
    * MakeMaker
    * Manifest
    * Miniperl
    * Mkbootstrap
    * Mksymlists
    * MM_Cygwin
    * MM_OS2
    * MM_Unix
    * MM_VMS
    * MM_Win32
    * Packlist
    * testlib
* Fatal
* Fcntl
* File
    * Basename
    * CheckTree
    * Compare
    * Copy
    * CounterFile
    * DosGlob
    * Find
    * Glob
    * Listing
    * Path
    * Spec
        * Functions
        * Mac
        * OS2
        * Unix
        * VMS
        * Win32
    * stat
* FileCache
* FileHandle
* FindBin
* Font
    * AFM
* Getopt
    * Long
    * Std
* HTML
    * AsSubs
    * Element
    * Entities
    * Filter
    * Form
    * FormatPS
    * Formatter
    * FormatText
    * HeadParser
    * LinkExtor
    * Parse
    * Parser
    * TokeParser
    * TreeBuilder
* HTTP
    * Cookies
    * Daemon
    * Date
    * Headers
        * Util
    * Message
    * Negotiate
    * Request
        * Common
    * Response
    * Status
* I18N
    * Collate
* IO
    * Dir
    * File
    * Handle
    * Pipe
    * Poll
    * Seekable
    * Select
    * Socket
        * INET
        * UNIX
* IPC
    * Msg
    * Open2
    * Open3
    * Semaphore
    * SysV
* LWP
    * Debug
    * MediaTypes
    * MemberMixin
    * Protocol
    * RobotUA
    * Simple
    * UserAgent
* Math
    * BigFloat
    * BigInt
    * Complex
    * Trig
* MD5
* MIME
    * Base64
    * QuotedPrint
* NDBM_File
* Net
    * Cmd
    * Config
    * Domain
    * DummyInetd
    * FTP
    * hostent
    * libnetFAQ
    * netent
    * Netrc
    * NNTP
    * PH
    * Ping
    * POP3
    * protoent
    * servent
    * SMTP
    * SNPP
    * Time
* O
* ODBM_File
* Opcode
* Pod
    * Checker
    * Find
    * Html
    * InputObjects
    * Man
    * Parser
    * ParseUtils
    * Plainer
    * Select
    * Text
        * Color
        * Termcap
    * Usage
* POSIX
* PPM
    * SOAPClient
    * SOAPServer
* Safe
* SDBM_File
* Search
    * Dict
* SelectSaver
* SelfLoader
* SHA
* Shell
* SOAP
    * Defs
    * Envelope
    * EnvelopeMaker
    * GenericHashSerializer
    * GenericInputStream
    * GenericScalarSerializer
    * Lite
    * OutputStream
    * Packager
    * Parser
    * Transport
        * HTTP
            * Apache
            * CGI
            * Client
            * Server
        * LOCAL
        * MAILTO
        * POP3
        * TCP
    * TypeMapper
* Socket
* Symbol
* Sys
    * Hostname
    * Syslog
* Term
    * ANSIColor
    * Cap
    * Complete
    * ReadLine
* Test
    * Harness
* Text
    * Abbrev
    * ParseWords
    * Soundex
    * Tabs
    * Wrap
* Thread
    * Queue
    * Semaphore
    * Signal
    * Specific
* Tie
    * Array
    * Handle
    * Hash
    * RefHash
    * Scalar
    * SubstrHash
* Time
    * gmtime
    * Local
    * localtime
    * tm
* UDDI
    * Lite
* UNIVERSAL
* URI
    * data
    * Escape
    * file
    * Heuristic
    * ldap
    * URL
    * WithBase
* User
    * grent
    * pwent
* Win32
    * AuthenticateUser
    * ChangeNotify
    * Clipboard
    * Console
    * Event
    * EventLog
    * File
    * FileSecurity
    * Internet
    * IPC
    * Mutex
    * NetAdmin
    * NetResource
    * ODBC
    * OLE
        * Const
        * Enum
        * NEWS
        * NLS
        * TPJ
        * Variant
    * PerfLib
    * Pipe
    * Process
    * Registry
    * Semaphore
    * Service
    * Sound
    * TieRegistry
* Win32API
    * File
    * Net
    * Registry
* WWW
    * RobotRules
        * AnyDBM_File
* XML
    * Element
    * Parser
        * Expat
    * PPD
    * PPMConfig
    * ValidatingElement
* XSLoader

 SOAP - Library for SOAP clients and servers in Perl


NAME

SOAP - Library for SOAP clients and servers in Perl


SUPPORTED PLATFORMS

  • Linux
  • Solaris
  • Windows

SYNOPSIS

  use SOAP;
  print "This is SOAP/Perl-$SOAP::VERSION\n";


DESCRIPTION

SOAP/Perl is a collection of Perl modules which provides a simple and consistent application programming interface (API) to the Simple Object Access Protocl (SOAP).

To learn more about SOAP, visit the FAQ at: <URL:http://www.develop.com/soap/soapfaq.htm>

This library provides tools for you to build SOAP clients and servers.

The library contains modules for high-level use of SOAP, but also modules for lower-level use in case you need something a bit more customized. The library is factored so that you can

SOAP/Perl uses Perl's object oriented features exclusively. There are no subroutines exported directly by these modules.

This version of SOAP/Perl supports the SOAP 1.0 specification, which is an IETF internet draft. See <URL:http://www.ietf.org> for details.

The main features of the library are:

  • Contains various reusable components (modules) that can be used separately or together.

  • Provides an object oriented model for serializing/deserializing and sending/receiving SOAP packets (lovingly referred to in some circles as SOAP bars). Within this framework we currently support access to SOAP over HTTP, but we're looking to expand to support SOAP over SMTP and other transports in the future.

  • Provides a fully object oriented interface.

  • Supports SOAP 1.0 spec. The current version does not yet handle arrays.

  • Supports serializing/deserializing of sophisticated object graphs which may have cycles (a circular queue would serialize just fine, for instance).

  • Provides full namespace support for SOAP 1.0, which is strongly recommended by the spec.

  • Implements full support for SOAP 1.0 packages, including correctly dealing with shared references between header and body elements.

  • Experimental support for extensibility of the serialization/deserialization architecture has been included; see SOAP::TypeMapper for details.

  • Supports servers using CGI or Apache+mod_perl. Tested with Apache on Linux as well as IIS on Windows 2000.

The EnvelopeMaker Object

SOAP::EnvelopeMaker takes as input an array of header objects and a single body object (currently these ``objects'' are simply Perl hashes, eventually we'll add support for blessed object references as well), and produces as output an XML stream.

The Parser Object

SOAP::Parser takes as input a string (or a file/file handle) and parses the content as a SOAP envelope. This results in an array of header objects and a single body element.

To avoid coupling the SOAP serialization/deserialization code to HTTP, a set of loadable transports is also provided. See the following modules for documentation of the transport architecture:

 SOAP::Transport::HTTP::Client
 SOAP::Transport::HTTP::Server
 SOAP::Transport::HTTP::Apache
 SOAP::Transport::HTTP::CGI

Where to Find Examples

See SOAP::EnvelopeMaker for a client-side example that shows the serialization of a SOAP request, sending it over HTTP and receiving a response, and the deserialization of the response.

See SOAP::Transport::HTTP::Apache for a server-side example that shows how to map incoming HTTP requests to method calls on your own Perl classes.


OVERVIEW OF CLASSES AND PACKAGES

This table should give you a quick overview of the classes provided by the library.

-- High-level classes you should begin with --

 SOAP::EnvelopeMaker   -- Serializes objects into SOAP bars
 SOAP::Parser          -- Deserializes SOAP bars into objects
 SOAP::Transport       -- Description of transport architecture
 SOAP::Transport::HTTP -- Description of HTTP transport
 SOAP::Transport::HTTP::Client -- Client side support for HTTP,
                                  using libwww-perl
 SOAP::Transport::HTTP::Server -- Server side support for HTTP,
                                  decoupled from web server APIs
 SOAP::Transport::HTTP::Apache -- Apache/mod_perl support
 SOAP::Transport::HTTP::CGI    -- Vanilla CGI support

-- Serialization architecture --

 SOAP::Envelope      -- Low level access to SOAP serialization
 SOAP::OutputStream  -- used in conjunction with SOAP::Envelope for
                        Low level access to SOAP serialization
 SOAP::Packager      -- Helps to implement SOAP 1.0 packages,
                        used by SOAP::Envelope and SOAP::OutputStream
 SOAP::GenericHashSerializer   -- Generic serializer for Perl hash references
 SOAP::GenericScalarSerializer -- Generic serializer for Perl scalars

-- Deserialization architecture --

 SOAP::GenericInputStream.pm   -- Look here if you are interested in
                                  extending the deserialization framework
                                  to be able to deserialize your own objects
-- Miscellaneous --
 SOAP::TypeMapper    -- An experimental extensibility point for the
                        serialization architecture
 SOAP::Defs          -- Constants used by the other modules


MORE DOCUMENTATION

All modules contain detailed information on the interfaces they provide.


BUGS AND LIMITATIONS

The serialization framework does not yet handle arrays, and the HTTP transport does not handle M-POST.


ACKNOWLEDGEMENTS

Keith Brown is the original and current author of this work, but he worked very closely with Don Box in developing a common design and implementation architecture (Don was building a Java implementation side-by-side, and Keith and Don worked together in a kind of XP style of programming - it was fun). GopalK at Microsoft was tremendously helpful in ferreting out issues in the SOAP spec. Mike Abercrombie at DevelopMentor (where Keith and Don work) was very supportive of the effort as well. Thanks Mike!


COPYRIGHT

  Copyright 1999-2000, DevelopMentor. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


AVAILABILITY

The latest version of this library is normally available from CPAN as well as:

 http://www.develop.com/soap

The best place to discuss this code is on the SOAP mailing list at:

 http://discuss.develop.com/soap.html

 SOAP - Library for SOAP clients and servers in Perl