I am getting the following error when I send a request with a WSDL that
contains an optional parent element
(cte_document/document_header/payment_information) but a required child element
(amount_collect):
--- ERROR ---
error: decode error: data for element or block starting with `amount_collect'
missing at
tns:calculateTaxOnCteDataModelResponse/return/cte_document/document_header/payment_information
Errors while decoding:
error: decode error: data for element or block starting with `amount_collect'
missing at
tns:calculateTaxOnCteDataModelResponse/return/cte_document/document_header/payment_information
---
My request does not contain the "payment_information" element, so the response
is also missing that element (as expected). The fault message seems to only be
on the response and not the request.
I believe this should be a valid WSDL configuration. I do get back a
valid/expected response in $answer
What can I do to prevent the error?
Should the printErrors() method be printing the error twice?
Dan T.
--- CODE ---
use XML::Compile::SOAP::WSS; # list before WSDL11
use XML::Compile::WSDL11;
use XML::Compile::SOAP11;
use XML::Compile::Transport::SOAPHTTP;
use XML::Compile::WSS::Util qw(:utp11);
use XML::LibXML::Simple qw(XMLin);
my $base = "data/ex_cte";
my $wsdlfn = "${base}_wsdl.xml";
my $reqfn = "${base}_request_orig.xml";
my $opname = "calculateTaxOnCteDataModel";
my $wss = XML::Compile::SOAP::WSS->new;
my $wsdl = XML::Compile::WSDL11->new( $wsdlfn );
my $auth = $wss->basicAuth
(
username => "my_user",
created => time(),
nonce => 'RANDOM',
pwformat => UTP11_PDIGEST,
password => "my_password",
);
my $data = XMLin ($reqfn, KeepRoot => 1);
my $call = $wsdl->compileClient($opname);
my ($answer, $trace) = $call->($data);
$trace->printErrors if ($trace->errors);
__END__
WSDL info:
<xs:element minOccurs="0" name="payment_information"
type="tns:payment-information"/>
<xs:complexType name="payment-information">
<xs:sequence>
<xs:element minOccurs="0" name="payment_number" type="xs:string"/>
<xs:element minOccurs="0" name="payment_terms" type="xs:string"/>
<xs:element minOccurs="0" name="paid_date" type="xs:string"/>
<xs:element minOccurs="1" name="amount_collect" type="xs:string"/>
<xs:element minOccurs="0" name="vat_amount_rec" type="xs:string"/>
<xs:element minOccurs="0" name="pay_disc_perc" type="xs:string"/>
<xs:element minOccurs="0" name="pay_terms_day" type="xs:string"/>
<xs:element minOccurs="0" name="installments" type="tns:payment-installments"/>
</xs:sequence>
</xs:complexType>
_______________________________________________
Xml-compile mailing list
[email protected]
http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/xml-compile