Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > Help needed regarding RPC::XML return value

Reply
Thread Tools

Help needed regarding RPC::XML return value

 
 
Darcy
Guest
Posts: n/a
 
      11-26-2007
I am trying to write an XML-RPC server method in perl using RPC::XML,
and I am having a rather perplexing problem when I attempt to return a
data structure to the caller (a Java app). I am told that the caller
is expecting an array of structs as the result.

I have tried many things, but have ended up with the same problem. as
an example, and as an attempt to simplify things, this is what my
method is returning:

return [({'SELL_LINE_NUMBER' => '1', 'ERROR_CODE' => "0",
'MESSAGE' => "test", 'CURRENT_TOTAL' => "1"})];

This is the error that the Java app is generating when it receives the
response:

ERROR 26 Nov 2007 16:56:50
(org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
java.lang.ClassCastException: java.lang.Integer


I have even tried this code snippet:

my @status;
my $record;
$record->{SELL_LINE_NUMBER} = $parts1;
$record->{ERROR_CODE} = "0";
$record->{MESSAGE} = "test";
$record->{CURRENT_TOTAL} = "1";
push(@status,$record);
return \@status;

with the same error being generated. I am at my wit's end trying to
figure out what is going on, and get it working. I also am not having
much luck finding other discussions of this problem elsewhere on the
internet.

I appreciate any and all help that you can supply.

Darcy
 
Reply With Quote
 
 
 
 
Ben Morrow
Guest
Posts: n/a
 
      11-26-2007

Quoth Darcy <(E-Mail Removed)>:
> I am trying to write an XML-RPC server method in perl using RPC::XML,
> and I am having a rather perplexing problem when I attempt to return a
> data structure to the caller (a Java app). I am told that the caller
> is expecting an array of structs as the result.
>
> I have tried many things, but have ended up with the same problem. as
> an example, and as an attempt to simplify things, this is what my
> method is returning:
>
> return [({'SELL_LINE_NUMBER' => '1', 'ERROR_CODE' => "0",
> 'MESSAGE' => "test", 'CURRENT_TOTAL' => "1"})];
>
> This is the error that the Java app is generating when it receives the
> response:
>
> ERROR 26 Nov 2007 16:56:50
> (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> java.lang.ClassCastException: java.lang.Integer


Just a completely random guess: have you tried using numbers instead of
strings? That is,

return [{
SELL_LINE_NUMBER => 1, # note absence of quotes
ERROR_CODE => 0,
MESSAGE => 'test',
CURRENT_TOTAL => 1,
}];

Ben

 
Reply With Quote
 
 
 
 
J. Gleixner
Guest
Posts: n/a
 
      11-26-2007
Darcy wrote:
[...]
> ERROR 26 Nov 2007 16:56:50
> (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> java.lang.ClassCastException: java.lang.Integer
>
>
> I have even tried this code snippet:
>
> my @status;
> my $record;
> $record->{SELL_LINE_NUMBER} = $parts1;
> $record->{ERROR_CODE} = "0";
> $record->{MESSAGE} = "test";
> $record->{CURRENT_TOTAL} = "1";
> push(@status,$record);
> return \@status;
>
> with the same error being generated. I am at my wit's end trying to
> figure out what is going on, and get it working. I also am not having
> much luck finding other discussions of this problem elsewhere on the
> internet.
>
> I appreciate any and all help that you can supply.


Just a guess..

Why are you quoting 0 and 1?

Given that the exception points to an Integer problem, remove
the quotes so Java will see it as an Integer instead of a string.
 
Reply With Quote
 
Darcy
Guest
Posts: n/a
 
      11-27-2007
On Nov 26, 5:22 pm, Ben Morrow <(E-Mail Removed)> wrote:
> Quoth Darcy <(E-Mail Removed)>:
>
>
>
> > I am trying to write an XML-RPC server method in perl using RPC::XML,
> > and I am having a rather perplexing problem when I attempt to return a
> > data structure to the caller (a Java app). I am told that the caller
> > is expecting an array of structs as the result.

>
> > I have tried many things, but have ended up with the same problem. as
> > an example, and as an attempt to simplify things, this is what my
> > method is returning:

>
> > return [({'SELL_LINE_NUMBER' => '1', 'ERROR_CODE' => "0",
> > 'MESSAGE' => "test", 'CURRENT_TOTAL' => "1"})];

>
> > This is the error that the Java app is generating when it receives the
> > response:

>
> > ERROR 26 Nov 2007 16:56:50
> > (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> > java.lang.ClassCastException: java.lang.Integer

>
> Just a completely random guess: have you tried using numbers instead of
> strings? That is,
>
> return [{
> SELL_LINE_NUMBER => 1, # note absence of quotes
> ERROR_CODE => 0,
> MESSAGE => 'test',
> CURRENT_TOTAL => 1,
> }];
>
> Ben


The reason for quoting the numbers, is because, the specs for the
return list all four as "string". I did try as straight numbers, but
got the same error.
 
Reply With Quote
 
Todd Wade
Guest
Posts: n/a
 
      11-27-2007
On Nov 26, 7:19 pm, Darcy <(E-Mail Removed)> wrote:
> On Nov 26, 5:22 pm, Ben Morrow <(E-Mail Removed)> wrote:
> > Quoth Darcy <(E-Mail Removed)>:

>
> > > I am trying to write an XML-RPC server method in perl using RPC::XML,
> > > and I am having a rather perplexing problem when I attempt to return a
> > > data structure to the caller (a Java app). I am told that the caller
> > > is expecting an array of structs as the result.

<snip/>
> > > This is the error that the Java app is generating when it receives the
> > > response:

>
> > > ERROR 26 Nov 2007 16:56:50
> > > (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> > > java.lang.ClassCastException: java.lang.Integer

>
> > Just a completely random guess: have you tried using numbers instead of
> > strings? That is,

>
> > return [{
> > SELL_LINE_NUMBER => 1, # note absence of quotes
> > ERROR_CODE => 0,
> > MESSAGE => 'test',
> > CURRENT_TOTAL => 1,
> > }];

>
> The reason for quoting the numbers, is because, the specs for the
> return list all four as "string". I did try as straight numbers, but
> got the same error.


What does the XML that client sending to the server look like? Thats
what you need to be looking at. For example, you said the spec expects
strings for each value. Chances are that "quoting" the numbers isn't
going to suffice RPC::XML's purposes.

You can coerce a value to a specific type by passing RPC::XML data
objects instead of scalars:

return [{
SELL_LINE_NUMBER => RPC::XML::string->new(1),
ERROR_CODE => RPC::XML::string->new(0),
MESSAGE => 'test',
CURRENT_TOTAL => RPC::XML::string->new(1),
}];

This will format the value as a <string> instead of an <int> in the
XML.

Regards,

trwww
 
Reply With Quote
 
Darcy
Guest
Posts: n/a
 
      11-27-2007
On Nov 26, 10:31 pm, Todd Wade <(E-Mail Removed)> wrote:
> On Nov 26, 7:19 pm, Darcy <(E-Mail Removed)> wrote:
>
>
>
> > On Nov 26, 5:22 pm, Ben Morrow <(E-Mail Removed)> wrote:
> > > Quoth Darcy <(E-Mail Removed)>:

>
> > > > I am trying to write an XML-RPC server method in perl using RPC::XML,
> > > > and I am having a rather perplexing problem when I attempt to return a
> > > > data structure to the caller (a Java app). I am told that the caller
> > > > is expecting an array of structs as the result.

> <snip/>
> > > > This is the error that the Java app is generating when it receives the
> > > > response:

>
> > > > ERROR 26 Nov 2007 16:56:50
> > > > (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> > > > java.lang.ClassCastException: java.lang.Integer

>
> > > Just a completely random guess: have you tried using numbers instead of
> > > strings? That is,

>
> > > return [{
> > > SELL_LINE_NUMBER => 1, # note absence of quotes
> > > ERROR_CODE => 0,
> > > MESSAGE => 'test',
> > > CURRENT_TOTAL => 1,
> > > }];

>
> > The reason for quoting the numbers, is because, the specs for the
> > return list all four as "string". I did try as straight numbers, but
> > got the same error.

>
> What does the XML that client sending to the server look like? Thats
> what you need to be looking at. For example, you said the spec expects
> strings for each value. Chances are that "quoting" the numbers isn't
> going to suffice RPC::XML's purposes.
>
> You can coerce a value to a specific type by passing RPC::XML data
> objects instead of scalars:
>
> return [{
> SELL_LINE_NUMBER => RPC::XML::string->new(1),
> ERROR_CODE => RPC::XML::string->new(0),
> MESSAGE => 'test',
> CURRENT_TOTAL => RPC::XML::string->new(1),
> }];
>
> This will format the value as a <string> instead of an <int> in the
> XML.
>
> Regards,
>
> trwww


Thanks. I will try that tomorrow. I do not know what the XML that is
being generated, though, since I currently do not have access to
that. I could try and "fudge" the request, so I can see the result,
unless there is a trick in perl where I could save a copy to file as
well as send to the requestor.
 
Reply With Quote
 
Darcy
Guest
Posts: n/a
 
      11-27-2007
On Nov 26, 11:31 pm, Todd Wade <(E-Mail Removed)> wrote:
> On Nov 26, 7:19 pm, Darcy <(E-Mail Removed)> wrote:
>
>
>
> > On Nov 26, 5:22 pm, Ben Morrow <(E-Mail Removed)> wrote:
> > > Quoth Darcy <(E-Mail Removed)>:

>
> > > > I am trying to write an XML-RPC server method in perl using RPC::XML,
> > > > and I am having a rather perplexing problem when I attempt to return a
> > > > data structure to the caller (a Java app). I am told that the caller
> > > > is expecting an array of structs as the result.

> <snip/>
> > > > This is the error that the Java app is generating when it receives the
> > > > response:

>
> > > > ERROR 26 Nov 2007 16:56:50
> > > > (org.wh.client.frontend.listener.WHAbstractFrontEn dActionListener) -
> > > > java.lang.ClassCastException: java.lang.Integer

>
> > > Just a completely random guess: have you tried using numbers instead of
> > > strings? That is,

>
> > > return [{
> > > SELL_LINE_NUMBER => 1, # note absence of quotes
> > > ERROR_CODE => 0,
> > > MESSAGE => 'test',
> > > CURRENT_TOTAL => 1,
> > > }];

>
> > The reason for quoting the numbers, is because, the specs for the
> > return list all four as "string". I did try as straight numbers, but
> > got the same error.

>
> What does the XML that client sending to the server look like? Thats
> what you need to be looking at. For example, you said the spec expects
> strings for each value. Chances are that "quoting" the numbers isn't
> going to suffice RPC::XML's purposes.
>
> You can coerce a value to a specific type by passing RPC::XML data
> objects instead of scalars:
>
> return [{
> SELL_LINE_NUMBER => RPC::XML::string->new(1),
> ERROR_CODE => RPC::XML::string->new(0),
> MESSAGE => 'test',
> CURRENT_TOTAL => RPC::XML::string->new(1),
> }];
>
> This will format the value as a <string> instead of an <int> in the
> XML.
>
> Regards,
>
> trwww


Thanks. That worked like a charm. I will remember from now on that I
need to force those that are to be strings in this manner, or else
rather cryptic errors could result.

Darcy
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
doubt regarding return value of a function felix C Programming 5 03-20-2007 04:28 AM
Please explain this unexpected behavior (regarding return-by-value) duffdevice@gmail.com C++ 4 11-10-2006 09:14 AM
what value does lack of return or empty "return;" return Greenhorn C Programming 15 03-06-2005 08:19 PM
Needed help for strtof return value Marcus Jacobs C Programming 7 09-25-2003 02:20 AM
Return a return value from Perl to Javascript PvdK Perl 0 07-24-2003 09:20 AM



Advertisments