SOAP::Lite serialisation differences between 0.60 and 0.69

Jonathan Lloyd webmaster at lifegames.org
Mon Jul 16 15:45:11 BST 2007


Ian,

I am attempting to troubleshoot your issue, by using the built-in SOAP::Data
module for the construction of the request, however I am receiving the
following error on your end when I attempt to submit the data.

Fatal error:  801 in /home/futurebz/public_html/mantis/core/user_api.php on
line 52 at soap.pl line 19

Do you have any type of access/error logs that could provide a more detailed
explanation of the problem?  Thanks!

-- Jonathan Lloyd

On 7/12/07, Ian Malpass <ian at indecorous.com> wrote:
>
> I'm using MantisConnect[0] to connect my code to the Mantis bug-tracking
> system[1]. The code I wrote works with 0.60, but fails with anything
> newer, and I don't know why. I've looked in the changelog but nothing
> obvious appeared.
>
> I have, in the past, built complex data structures by using bless. I'm
> assuming this isn't the right way to do things, but it works (or used
> to) and it's a lot simpler than mucking with SOAP::Data and friends.
>
> Below is a script that illustrates my approach and suffers from the
> problem. (Apologies for the ugliness of the transport sub - I lost the
> will to make it pretty.) The 'ObjectRef' blessed refs come from previous
> method calls to extract data from Mantis, also using MantisConnect. The
> WSDL file can be seen at
> <http://www.futureware.biz/mantis/mc/mantisconnect.php?wsdl>.
>
> I've also added the HTTP::Request that gets sent for 0.60 and 0.69. In
> 0.60, the request includes serialised data for the IssueData object as
> expected. In 0.69, I get
>
>      <issue xsi:nil="true" xsi:type="tns:IssueData" />
>
> Any help, insight, pointers, etc. would be greatly appreciated.
>
> Thanks,
>
> Ian
>
> ----
>
> # SOAP::Lite example script
> use strict;
> use warnings;
> use Data::Dumper;
> use SOAP::Lite ( +trace => [ transport => sub {
>         my $msg = Dumper $_[0];
>          $msg =~ s|<|\n<|g;
>          $msg =~ s|>|>\n|g;
>          $msg =~ s|=>\n|=>|g;
>          $msg =~ s|\n\n|\n|g;
>          print STDERR "$msg\n------\n";
> } ] );
>
> my $issue = bless( {
>      'priority' => bless(
>          { 'name' => 'none', 'id' => '10' }, 'ObjectRef'
>      ),
>      'additional_information' => 'some additonal info',
>      'project' => bless(
>          { 'name' => 'Example', 'id' => '1', }, 'ObjectRef'
>      ),
>      'description' => 'a description',
>      'summary' => 'a summary',
>      'view_state' => bless(
>          { 'name' => 'public', 'id' => '10' }, 'ObjectRef'
>      ),
>      'category' => 'Category A',
>      'reproducibility' => bless(
>          { 'name' => 'always', 'id' => '10' }, 'ObjectRef'
>      ),
>      'severity' => bless(
>          { 'name' => 'feature', 'id' => '10' }, 'ObjectRef'
>      )
> }, 'IssueData' );
>
> my $soap = SOAP::Lite
>          ->service( 'http://localhost/mantis/mc/mantisconnect.php?wsdl' )
>          ->xmlschema( 'http://www.w3.org/2001/XMLSchema' );
> $issue = $soap->mc_issue_add( 'administrator', 'root', $issue );
>
> ----
>
> # SOAP Lite 0.60
>
> $VAR1 = bless( {
>                   '_protocol' => 'HTTP/1.1',
>                   '_content' => '
> <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:namesp2="http://namespaces.soaplite.com/perl"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <SOAP-ENV:Body>
> <namesp1:mc_issue_add xmlns:namesp1="http://futureware.biz/mantisconnect">
> <username xsi:type="xsd:string">
> administrator
> </username>
> <password xsi:type="xsd:string">
> root
> </password>
> <issue xsi:type="tns:IssueData">
> <priority xsi:type="namesp2:ObjectRef">
> <name xsi:type="xsd:string">
> none
> </name>
> <id xsi:type="xsd:int">
> 10
> </id>
> </priority>
> <additional_information xsi:type="xsd:string">
> additonal info
> </additional_information>
> <project xsi:type="namesp2:ObjectRef">
> <name xsi:type="xsd:string">
> ATM
> </name>
> <id xsi:type="xsd:int">
> 1
> </id>
> </project>
> <description xsi:type="xsd:string">
> desc
> </description>
> <summary xsi:type="xsd:string">
> sdfsdfd
> </summary>
> <view_state xsi:type="namesp2:ObjectRef">
> <name xsi:type="xsd:string">
> public
> </name>
> <id xsi:type="xsd:int">
> 10
> </id>
> </view_state>
> <category xsi:type="xsd:string">
> Category A
> </category>
> <reproducibility xsi:type="namesp2:ObjectRef">
> <name xsi:type="xsd:string">
> always
> </name>
> <id xsi:type="xsd:int">
> 10
> </id>
> </reproducibility>
> <severity xsi:type="namesp2:ObjectRef">
> <name xsi:type="xsd:string">
> feature
> </name>
> <id xsi:type="xsd:int">
> 10
> </id>
> </severity>
> </issue>
> </namesp1:mc_issue_add>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> ',
>                   '_uri' => bless( do{\(my $o =
> 'http://localhost/mantis/mc/mantisconnect.php')}, 'URI::http' ),
>                   '_headers' => bless( {
>                                          'soapaction' =>
> '"http://localhost/mantis/mc/mantisconnect.php/mc_issue_add"',
>                                          'content-type' => 'text/xml;
> charset=utf-8',
>                                          'accept' => [
>                                                        'text/xml',
>                                                        'multipart/*'
>                                                      ],
>                                          'content-length' => 1539
>                                        }, 'HTTP::Headers' ),
>                   '_method' => 'POST'
>                 }, 'HTTP::Request' );
>
> ----
>
> # SOAP::Lite 0.69
>
> $VAR1 = bless( {
>                   '_protocol' => 'HTTP/1.1',
>                   '_content' => '
> <?xml version="1.0" encoding="UTF-8"?>
> <SOAP-ENV:Envelope
> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:si="http://soapinterop.org/xsd"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:tns="http://futureware.biz/mantisconnect"
> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
> <SOAP-ENV:Body>
> <tns:mc_issue_add>
> <username xsi:type="xsd:string">
> administrator
> </username>
> <password xsi:type="xsd:string">
> root
> </password>
> <issue xsi:nil="true" xsi:type="tns:IssueData" />
> </tns:mc_issue_add>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
> ',
>                   '_uri' => bless( do{\(my $o =
> 'http://persephone/mantis/mc/mantisconnect.php')}, 'URI::http' ),
>                   '_headers' => bless( {
>                                          'soapaction' =>
> '"http://persephone/mantis/mc/mantisconnect.php/mc_issue_add"',
>                                          'content-type' => 'text/xml;
> charset=utf-8',
>                                          'accept' => [
>                                                        'text/xml',
>                                                        'multipart/*',
>                                                        'application/soap'
>                                                      ],
>                                          'content-length' => 764
>                                        }, 'HTTP::Headers' ),
>                   '_method' => 'POST'
>                 }, 'HTTP::Request' );
>
> ----
>
> [0] <http://www.futureware.biz/mantisconnect/>
> [1] <http://www.mantisbt.org/>
>
>


-- 
Jonathan Lloyd
Lifegames Web Design & Consulting
(714) 328-3249


More information about the london.pm mailing list