I'm not sure if this helps but in my system I have to transmit , receive and process the raw XML data within the Body of the SOAP packet:
my $response = $service->transport->send_receive(
envelope => $envelope
);
Where the $envelope is the XML I have created (This is the whole thing, envelope/head/body).
I also have to deal with multiple attachments and had little luck getting SOAP::Attachments to work with the Sun Java libraries. I just used Mime::Parser and determined the content type, parts (etc)
my $entity = $parser->parse_data($response);
You can then do this:
# We have some parts - one XML at least
my $num_parts = $entity->parts;
# No guarantee of order
for(my $i = 0; $i < $num_parts; $i++)
{
my $part = $entity->parts($i);
if($part->mime_type eq 'text/xml')
{
# Do stuff with XML
}
else
{
$datatype = $part->mime_type;
# Do stuff with attachment
}
}
I hasten to add I didn't like the fact I couldn't use a SOAP::* module but I had immense difficulty (at the time) getting SOAP::Lite and Sun to play together anyother way (this was a year ago btw). |