Symptoms
Perl Frontier::Client XML-RPC client library allows one to specify "true" and "false" as values of boolean parameters. The POA 5.5 Pubic API server will respond to requests contain "true" and "false" boolean parameters with error.Sample code:
use Frontier::RPC2;
use Frontier::Client;
my $poa = "10.30.30.2";
my $subscription = 1;
my $poaserver = Frontier::Client->new( 'url' => "http://".$poa.":8440/RPC2", 'debug' => 1);
my %args = (
'subscription_id' => $poaserver->int($subscription),
'get_resources' => $poaserver->boolean('true')
);
my $results=$poaserver->call('pem.getSubscription', \%args);
Sample response
<?xml version="1.0"?>
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<i4>-32500</i4>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>bad lexical cast: source type value could not be interpreted as target</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
Cause
The "true" and "false" XML-RPC boolean parameter are not standard. The specification requires boolean parameters to be either 1 or 0. See http://xmlrpc.scripting.com/spec.htmlNew version of XML-RPC server used by POA does not support non-standard boolean values.
Resolution
Change Perl code, so all boolean parameters would sent as 0 or 1:- boolean('true') replace with boolean('1')
- boolean('false') replace with boolean('0')