./complex.pl document/literal support is EXPERIMENTAL in SOAP::Lite at /usr/local/share/perl/5.8.7/SOAP/Lite.pm line 2818. Type 'PublishRequest' can't be found in a schema class 'SOAP::Serializer' #### #### package PublishRequestType; use strict; use warnings; use SOAP::Data::ComplexType; use vars qw(@ISA); @ISA = qw(SOAP::Data::ComplexType); use constant OBJ_URI => 'http://services.mydomain.org/broker'; use constant OBJ_TYPE => 'ns1:PublishRequest'; use constant OBJ_FIELDS => { PublishRequest => [[ BrokerMessageType_inner::OBJ_TYPE, BrokerMessageType_inner::OBJ_FIELDS ], BrokerMessageType_inner::OBJ_URI, undef ] }; sub new { my $proto = shift; my $class = ref($proto) || $proto; my $data = shift; my $obj_fields = shift; $obj_fields = defined $obj_fields && ref($obj_fields) eq 'HASH' ? {%{$obj_fields}, %{+OBJ_FIELDS}} : OBJ_FIELDS; my $self = $class->SUPER::new($data, $obj_fields); return bless($self, $class); } package BrokerMessageType_inner; use strict; use warnings; use SOAP::Data::ComplexType; use vars qw(@ISA); @ISA = qw(SOAP::Data::ComplexType); use constant OBJ_URI => 'http://services.mydomain.org/broker'; use constant OBJ_TYPE => 'ns1:PublishRequest'; use constant OBJ_FIELDS => { BrokerMessage => [[ BrokerMessageType::OBJ_TYPE, BrokerMessageType::OBJ_FIELDS ], BrokerMessageType::OBJ_URI, undef ] }; sub new { my $proto = shift; my $class = ref($proto) || $proto; my $data = shift; my $obj_fields = shift; $obj_fields = defined $obj_fields && ref($obj_fields) eq 'HASH' ? {%{$obj_fields}, %{+OBJ_FIELDS}} : OBJ_FIELDS; my $self = $class->SUPER::new($data, $obj_fields); return bless($self, $class); } package BrokerMessageType; use strict; use warnings; use SOAP::Data::ComplexType; use vars qw(@ISA); @ISA = qw(SOAP::Data::ComplexType); use constant OBJ_URI => 'http://services.mydomain.org/broker'; use constant OBJ_TYPE => 'ns1:BrokerMessage'; use constant OBJ_FIELDS => { deliveryMode => ['int', undef, undef], priority => ['int', undef, undef], messageId => ['string', undef, undef], correlationId => ['string', undef, undef], timestamp => ['string', undef, undef], expiration => ['string', undef, undef], destinationName => ['string', undef, undef], textPayload => ['string', undef, undef], }; sub new { my $proto = shift; my $class = ref($proto) || $proto; my $data = shift; my $obj_fields = shift; $obj_fields = defined $obj_fields && ref($obj_fields) eq 'HASH' ? {%{$obj_fields}, %{+OBJ_FIELDS}} : OBJ_FIELDS; my $self = $class->SUPER::new($data, $obj_fields); return bless($self, $class); } #### #!/usr/bin/perl -w package main; use strict; use Data::Dumper; use SOAP::Lite +trace => qw( debug ); use SOAP::Data::ComplexType; use BrokerMessageType; use BrokerMessageType_inner; use PublishRequestType; my $WSDL = 'file:///tmp/broker.wsdl'; my $soap = SOAP::Lite -> uri('http://services.mydomain.org/broker') -> service($WSDL); my $request_obj = PublishRequestType->new ({ PublishRequest => { BrokerMessage => { destinationName => 'blogs', textPayload => 'TEST' }} }); $soap->publish($request_obj->as_soap_data); #### blogs TEST