Xmlrpc problems


#1

Hi!

I have some trouble getting xmlrpc to work. When I try to run
introspection sample I get:
c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:496:in
do_rpc': HTTP-Error: 500 Internal Server Error (RuntimeError) from c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:382:incall2’
from c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:372:in
`call’
from G:\Ruby\BlogClient.rb:5

On the server I get:
[Sat Jun 29 01:35:39 2002] HttpServer 127.0.0.1:8070 start
[Sat Jun 29 01:36:22 2002] HttpServer 127.0.0.1:8070 client:4631
caelum<127.0.0.1> connect
[Sat Jun 29 01:36:22 2002] HttpServer 127.0.0.1:8070 client:4631
disconnect

What is the problem?

I use:
Windows 2000
Ruby 1.66
xmlrpc4r 1.7.11

Thanks in advance,
Jonas


(Michael Neumann) #2

Your xmlrpc server must support introspection.

If it is a Ruby xmlrpc server, you have to explicitly
make introspection available. Do this by calling

server.add_introspection

Alternatively you can make introspection the default by
setting the flag ENABLE_INTROSPECTION in config.rb.

Regards,

Michael

···

On Sat, Jun 29, 2002 at 08:47:16AM +0900, Jonas Bengtsson wrote:

Hi!

I have some trouble getting xmlrpc to work. When I try to run
introspection sample I get:
c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:496:in
do_rpc': HTTP-Error: 500 Internal Server Error (RuntimeError) from c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:382:incall2’
from c:/program/ruby/lib/ruby/site_ruby/1.6/xmlrpc/client.rb:372:in
`call’
from G:\Ruby\BlogClient.rb:5

On the server I get:
[Sat Jun 29 01:35:39 2002] HttpServer 127.0.0.1:8070 start
[Sat Jun 29 01:36:22 2002] HttpServer 127.0.0.1:8070 client:4631
caelum<127.0.0.1> connect
[Sat Jun 29 01:36:22 2002] HttpServer 127.0.0.1:8070 client:4631
disconnect

What is the problem?


(Jonas Bengtsson) #3

Hello Michael,

Thanks for your answer! Now I got it to work. But I have another
problem – I want my method to reply something like this:

<?xml version="1.0" encoding="ISO-8859-1"?> nickname aa userid 11 url http://www.aaa.com email aaa@aaa.com lastname aaa firstname aaa

I tried to return a hash, but that didn’t produce the right reply.

Does anybody have any suggestions?

···

Best regards,
Jonas

I always thought that record would stand until it was broken.

  • Yogi Berra

Saturday, June 29, 2002, 12:43:37 PM, you wrote:

Your xmlrpc server must support introspection.

If it is a Ruby xmlrpc server, you have to explicitly
make introspection available. Do this by calling

server.add_introspection

Alternatively you can make introspection the default by
setting the flag ENABLE_INTROSPECTION in config.rb.

Regards,

Michael


(Michael Neumann) #4

Hmm, how does the result using a hash look like?
It should look similar except perhaps the order in which the member’s
occure, because you cannot specify the order using hashs!

If you want to preserve the ordering of members, use a Struct instead,
as shown below:

MyRecord = Struct.new(“MyRecord”, :nickname, :userid, :url, :email,
:lastname, :firstname)

aRecord = MyRecord.new(“aa”, …)

return aRecord

Regards,

Michael

···

On Sat, Jun 29, 2002 at 09:16:14PM +0900, Jonas Bengtsson wrote:

Hello Michael,

Thanks for your answer! Now I got it to work. But I have another
problem – I want my method to reply something like this:

<?xml version="1.0" encoding="ISO-8859-1"?> nickname aa userid 11 url http://www.aaa.com email aaa@aaa.com lastname aaa firstname aaa

I tried to return a hash, but that didn’t produce the right reply.


(Jonas Bengtsson) #5

Hello Michael,

When I printed the returned variable in the client I got something
like:
userid1emailaaa@aaa.comurlwww.aaa.comlastnameaaafirstnameaaanicknameaaa

It was basically the same as I got when using a hash.

Is there any way to see the ‘raw’ reply from the xmlrpc server (i.e.
the actual xml)?

···


Best regards,
Jonas

Take everything you like seriously, except yourselves.

  • Rudyard Kipling

Saturday, June 29, 2002, 4:08:42 PM, you wrote:

Hmm, how does the result using a hash look like?
It should look similar except perhaps the order in which the member’s
occure, because you cannot specify the order using hashs!

If you want to preserve the ordering of members, use a Struct instead,
as shown below:

MyRecord = Struct.new(“MyRecord”, :nickname, :userid, :url, :email,
:lastname, :firstname)

aRecord = MyRecord.new(“aa”, …)

return aRecord

Regards,

Michael


(Michael Neumann) #6

Hello Michael,

When I printed the returned variable in the client I got something
like:
userid1emailaaa@aaa.comurlwww.aaa.comlastnameaaafirstnameaaanicknameaaa

If you’re using “print variable”, try “p variable” or "print variable.inspect"
instead.

It was basically the same as I got when using a hash.

Is there any way to see the ‘raw’ reply from the xmlrpc server (i.e.
the actual xml)?

Not directly or with modifications.

Either change method call2 in file lib/client.rb, and output variable
data before passing it to “parser().parseMethodResponse”, or alternatively
use samples/monitor/monitor.rb to show all data sent to and received from
the server.

Regards,

Michael

···

On Sun, Jun 30, 2002 at 12:37:51AM +0900, Jonas Bengtsson wrote:


(Jonas Bengtsson) #7

Hello Michael,

Saturday, June 29, 2002, 6:51:25 PM, you wrote:

If you’re using “print variable”, try “p variable” or "print variable.inspect"
instead.

Ahh, thanks!

Is there any way to see the ‘raw’ reply from the xmlrpc server (i.e.
the actual xml)?

Not directly or with modifications.

Either change method call2 in file lib/client.rb, and output variable
data before passing it to “parser().parseMethodResponse”, or alternatively
use samples/monitor/monitor.rb to show all data sent to and received from
the server.

I found another proxy that did the same thing as monitor and that did
the trick.

···


Best regards,
Jonas

Man is the Only Animal that Blushes. Or needs to.
Mark Twain