Article ID: 118672, created on Nov 15, 2013, last review on May 10, 2014

  • Applies to:
  • Operations Automation 5.5

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.html

New 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')

 

5b048d9bddf8048a00aba7e0bdadef37 caea8340e2d186a540518d08602aa065 5356b422f65bdad1c3e9edca5d74a1ae 2554725ed606193dd9bbce21365bed4e e12cea1d47a3125d335d68e6d4e15e07

Email subscription for changes to this article
Save as PDF