Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Soap::Lite and Complex Types with WSDL

by Anonymous Monk
on May 11, 2011 at 14:19 UTC ( #904166=note: print w/ replies, xml ) Need Help??


in reply to Soap::Lite and Complex Types with WSDL

error
Element '<ConnectContactId>' can't be allowed in valid XML message. Died. at C:/perl/site/5.12.2/lib/SOAP/Lite.pm line 1412.
a tidy request
$ perl soap.lite.904155.pl POST http://localhost/blah/DummyService HTTP/1.1 Accept: text/xml Accept: multipart/* Accept: application/soap User-Agent: SOAP::Lite/Perl/0.712 Content-Length: 700 Content-Type: text/xml; charset=utf-8 SOAPAction: "#ContactInsertOrUpdate" <?xml version="1.0" encoding="UTF-8"?> <soap:Envelope soap:encodingStyle="http://schemas.xmlsoap.org/soap/enc +oding/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns: +soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http:/ +/www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSche +ma-instance"> <soap:Body> <ContactInsertOrUpdate> <ListOfArmAccountContactInterface> <ARMAccount> <ContactCompanyId xsi:type="xsd:int">1029843</ContactCompany +Id> <ListOfArmContact> <ARMContact> <ConnectContactId xsi:type="xsd:string">CON12347</Connec +tContactId> </ARMContact> </ListOfArmContact> </ARMAccount> </ListOfArmAccountContactInterface> </ContactInsertOrUpdate> </soap:Body> </soap:Envelope>
code
#!/usr/bin/perl -- use SOAP::Lite; my $soap = SOAP::Lite ->proxy( 'http://localhost/blah/DummyService', timeout => 0.00001, ); $soap->transport->add_handler("request_send", \&pp_dump ); $soap->transport->add_handler("response_done", \&pp_dump ); my $param = SOAP::Data->name( "ListOfArmAccountContactInterface" => \SOAP::Data->value( SOAP::Data->name( "ARMAccount" => \SOAP::Data->value( SOAP::Data->name( "ContactCompanyId" => '1029843' ), SOAP::Data->name( "ListOfArmContact" => \SOAP::Data->value( SOAP::Data->name( "ARMContact" => \SOAP::Data->value( #~ SOAP::Data->name("<ConnectContactId>" => 'CON12347' +) SOAP::Data->name( "ConnectContactId" => 'CON12347' ) ) ) ) ) ) ) ) ); #~ print pp( #~ $soap->serializer()->envelope( #~ method => 'ContactInsertOrUpdate', #~ $param #~ ), #~ ), "\n\n"; $soap->call( 'ContactInsertOrUpdate', $param ); sub pp { use XML::Twig; open my($fh), '>', \my $str; no warnings 'newline'; XML::Twig->new(qw! pretty_print record !)->xparse(@_)->print( $fh +); return $str; } sub pp_dump { my $content = $_[0]->content(''); $_[0]->content( pp($content) ); print $_[0]->as_string,"\n"; return; } __END__


Comment on Re: Soap::Lite and Complex Types with WSDL
Select or Download Code
Replies are listed 'Best First'.
Re^2: Soap::Lite and Complex Types with WSDL
by firstaspect (Initiate) on May 11, 2011 at 14:27 UTC
    As far as I'm aware I can't use SOAP::Lite->proxy while using a local file location for my WSDL file? It doesn't like the 'file:/' like SOAP::Lite->service does. Thanks.
      As far as I'm aware I can't use SOAP::Lite->proxy while using a local file location for my WSDL file? It doesn't like the 'file:/' like SOAP::Lite->service does. Thanks.

      I don't know what you mean by that. See How do I post a question effectively?

        In my original post I'm using
        my $soap_result = SOAP::Lite -> service('file:/home/wsdl/Contact_Interface.wsdl') ;
        In your reply you are using:
        my $soap = SOAP::Lite ->proxy( 'http://localhost/blah/DummyService');
        And I don't believe I can use the second example with a local file.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://904166]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (8)
As of 2015-07-31 05:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (274 votes), past polls