Subject: | bug under apache+mod_perl+html::mason |
Have nice day,
I using:
Linux 3.2.0-3-amd64 #1 SMP Mon Jul 23 02:45:17 UTC 2012 x86_64 GNU/Linux
Debian unstable/sid
Apache: 2.2.22
Perl: 5.14.2
Mod_perl: 2.0.7
HTML::Mason: 1.48
XML::Compile::SOAP: 2.28
I develop web application using Apache+mod_perl+HTML::Mason stack:
# ...
my $call = $self->{wsdl}->compileClient(
operation => $service,
endpoint => $self->{url},
);
# ...
my ($res, $trace) = $call->(
wsse_Security => $self->{auth}
);
print STDERR "res = ", Dumper($res);
print STDERR "trace = ", Dumper($trace);
And get error:
res = $VAR1 = undef;
trace = $VAR1 = bless( {
'transport_end' => '1344927523.95665',
'parse_elapse' => '0.00159311294555664',
'connect_elapse' => '0.0633130073547363',
'stringify_elapse' => '6.69956207275391e-05',
'http_response' => bless( {
'_protocol' => 'HTTP/1.1',
'_content' =>
'<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getVenueListResponse
xmlns:ns2="http://services.api.gate.pmisoft.ru/"><venueList><id>1</id><name>Test
place</name></venueList></ns2:getVenueListResponse></soap:Body></soap:Envelope>',
'_rc' => 200,
'_headers' => bless( {
'client-date' => 'Tue, 14 Aug 2012 06:58:43 GMT',
'content-type' => 'text/xml;charset=UTF-8',
'client-response-num' => 1,
'date' => 'Tue, 14 Aug 2012 07:00:03 GMT',
'client-peer' => '172.27.35.11:8080',
'content-length' => '290',
'server' => 'Apache-Coyote/1.1'
},
'HTTP::Headers' ),
'_msg' => 'OK',
'_request' => bless( {
'_content_ref' => 1,
'_content' => 'SCALAR(0x7ffac12b2858)',
'_protocol' => 'HTTP/1.1',
'_uri' => 'http://172.27.35.11:8080/kassirgate/VenueService',
'_headers' => 'HTTP::Headers=HASH(0x7ffac1282ba0)',
'_method' => 'POST'
},
'HTTP::Request' )
}, 'HTTP::Response' ),
'encode_elapse' => '0.000475883483886719',
'error' => bless( {
'euid' => '33',
'uid' => '33',
'time' => 1344927523,
'egid' => '33 33',
'message' => 'Can\'t call method
"parse_string" on unblessed reference at
/usr/share/perl5/XML/Compile/Transport.pm line 77.
',
'trace' => bless( {
'ignore_class'
=> 'ARRAY(0x7ffabb4114d0)',
'ignore_package' => 'ARRAY(0x7ffabb4114a0)',
'frames' =>
'ARRAY(0x7ffac1309bd8)',
'max_arg_length' => 0,
'index' => undef,
'no_refs' => 1,
'raw' =>
'ARRAY(0x7ffac1309c08)',
'respect_overload' => 0
},
'Devel::StackTrace' ),
'format' => 'text',
'pid' => 12817,
'gid' => '33 33'
}, 'HTML::Mason::Exception' ),
'elapse' => '0.0654489994049072',
'transport_elapse' => '0.0649731159210205',
'http_request' => $VAR1->{'http_response'}{'_request'},
'start' => '1344927523.8912',
'transport_start' => '1344927523.89167'
}, 'XML::Compile::SOAP::Trace' );
To fix this problem I change code in XML/Compile/Transport.pm near line 77:
my $xmlin;
if($textin)
{ $xmlin = eval { XML::LibXML->load_xml( string => $textin ) };
if($@) { $trace->{error} = $@ }
else { $trace->{response_dom} = $xmlin }
}