SOAP::Lite serializes "18373" as an integer, but I want it to be a string!

    SOAP::Lite guesses datatypes from the content provided, using a set of common-sense rules. These rules are not 100% reliable, though they fit for most data.

    You may force the type by passing a SOAP::Data object with a type specified:

     my $proxy = SOAP::Lite->proxy('');
     my $som = $proxy->myMethod(

    You may also change the precedence of the type-guessing rules. Note that this means fiddling with SOAP::Lite's internals - this may not work as expected in future versions.

    The example above forces everything to be encoded as string (this is because the string test is normally last and always returns true):

      my @list = qw(-1 45 foo bar 3838);
      my $proxy = SOAP::Lite->uri($uri)->proxy($proxyUrl);
      my $lookup = $proxy->serializer->typelookup;
      $lookup->{string}->[0] = 0;

    See SOAP::Serializer for more details.
+autodispatch doesn't work in Perl 5.8

    There is a bug in Perl 5.8's UNIVERSAL::AUTOLOAD functionality that prevents the +autodispatch functionality from working properly. The workaround is to use dispatch_from instead. Where you might normally do something like this:

       use Some::Module;
       use SOAP::Lite +autodispatch =>
           uri => 'urn:Foo'
           proxy => 'http://...';

    You would do something like this:

       use SOAP::Lite dispatch_from(Some::Module) =>
           uri => 'urn:Foo'
           proxy => 'http://...';

Problems using SOAP::Lite's COM Interface

    Can't call method "server" on undefined value

        You probably did not register Lite.dll using regsvr32 Lite.dll
    Failed to load PerlCtrl Runtime

        It is likely that you have install Perl in two different locations and the location of ActiveState's Perl is not the first instance of Perl specified in your PATH. To rectify, rename the directory in which the non-ActiveState Perl is installed, or be sure the path to ActiveState's Perl is specified prior to any other instance of Perl in your PATH.

Dynamic libraries are not found

    If you are using the Apache web server, and you are seeing something like the following in your webserver log file:

      Can't load '/usr/local/lib/perl5/site_perl/.../XML/Parser/Expat/'
        for module XML::Parser::Expat: dynamic linker: /usr/local/bin/perl: is NEEDED, but object does not exist at
        /usr/local/lib/perl5/.../ line 200.

    Then try placing the following into your httpd.conf file and see if it fixes your problem.

     <IfModule mod_env.c>
         PassEnv LD_LIBRARY_PATH

SOAP client reports "500 unexpected EOF before status line seen

    See "Apache is crashing with segfaults"
Apache is crashing with segfaults

    Using SOAP::Lite (or XML::Parser::Expat) in combination with mod_perl causes random segmentation faults in httpd processes. To fix, try configuring Apache with the following:


    If you are using Apache 1.3.20 and later, try configuring Apache with the following option:

     ./configure --disable-rule=EXPAT

    See for more details and lot of thanks to Robert Barta <[email protected]> for explaining this weird behavior.

    If this doesn't address the problem, you may wish to try -Uusemymalloc, or a similar option in order to instruct Perl to use the system's own malloc.

    Thanks to Tim Bunce <[email protected]>.
CGI scripts do not work under Microsoft Internet Information Server (IIS)

    CGI scripts may not work under IIS unless scripts use the .pl extension, opposed to .cgi.
Java SAX parser unable to parse message composed by SOAP::Lite

    In some cases SOAP messages created by SOAP::Lite may not be parsed properly by a SAX2/Java XML parser. This is due to a known bug in org.xml.sax.helpers.ParserAdapter. This bug manifests itself when an attribute in an XML element occurs prior to the XML namespace declaration on which it depends. However, according to the XML specification, the order of these attributes is not significant.

    Thanks to Steve Alpert ([email protected]) for pointing on it.