Forum: Ruby XMLRPC Problem

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Aa A. (Guest)
on 2007-03-05 21:50
Hello,

I am trying to run a small test case here and it times out on me all the
time:
Here is my code:

require 'xmlrpc/client'
require 'pp'

applicationName = "Demo AcceptanceTestingApp"
server =
XMLRPC::Client.new2("https://vwtest.oas.psu.edu/isapi/gi.dll/rpc2")
result = server.call("blank","whatever",applicationName)
pp result

The call just times out even though I have other programs in Python, CF
working just fine.
Is there any way to see what ruby sends to the server? I tried using
HTTPAnalyzer, but it captures nothing.
I am wondering if it even sends anythign?
Brian C. (Guest)
on 2007-03-05 22:35
(Received via mailing list)
On Tue, Mar 06, 2007 at 04:50:36AM +0900, Aa Aa wrote:
> result = server.call("blank","whatever",applicationName)
> pp result
>
> The call just times out even though I have other programs in Python, CF
> working just fine.
> Is there any way to see what ruby sends to the server? I tried using
> HTTPAnalyzer, but it captures nothing.

If one side is Linux, try

   tcpdump -i eth0 -n -s0 -X tcp port 80

or install wireshark and use that (for a fluffy GUI interface).

If both sides are Windows, you can install wireshark, or its older
cousin
ethereal.

HTH,

Brian.
Alex Y. (Guest)
on 2007-03-05 23:47
(Received via mailing list)
Brian C. wrote:
>> XMLRPC::Client.new2("https://vwtest.oas.psu.edu/isapi/gi.dll/rpc2")
>    tcpdump -i eth0 -n -s0 -X tcp port 80
Or:

$ cat xmlrpc_conversation.rb

require 'xmlrpc/client'
require 'yaml'

module XMLRPC
   class ConversationSavingClient < Client
     attr_reader :conversation
     def initialize(*args)
       super
       @conversation = []
     end

     def do_rpc(request, async=false)
       response = super(request, async)
       @conversation << [request, response]
       return response
     end
   end
end


client = XMLRPC::ConversationSavingClient.new('time.xmlrpc.com',
'/RPC2', 80)
client.call('currentTime.getCurrentTime')
puts client.conversation.to_yaml

$ ruby xmlrpc_conversation.rb
---
- - |
     <?xml version="1.0"
?><methodCall><methodName>currentTime.getCurrentTime</methodName><params/></methodCall>

   - |
     <?xml version="1.0"?>
     <methodResponse>
         <params>
                 <param>

<value><dateTime.iso8601>20070305T13:43:22</dateTime.iso8601></value>
                         </param>
                 </params>
         </methodResponse>


Is that helpful?
Aa A. (Guest)
on 2007-03-06 00:54
HELPFULL!?!! Helpful is not the word. You should be elevated to god-like
status :).
Your solution exposed my embarrasing stupidity and lack of attention
plus it taught me something.
Ruby does force me think harder at stuff and certainly didn't try hard
enough.
Thanks again.

Brian: Yours helped me too. That's how I figured out that there was no
communication except certificate handshake. HTTPAnalyzer isn't able to
capture anything for whatever reason.

Mucho THNX


Alex Y. wrote:
> Brian C. wrote:
>>> XMLRPC::Client.new2("https://vwtest.oas.psu.edu/isapi/gi.dll/rpc2")
>>    tcpdump -i eth0 -n -s0 -X tcp port 80
> Or:
>
> $ cat xmlrpc_conversation.rb
>
> require 'xmlrpc/client'
> require 'yaml'
>
> module XMLRPC
>    class ConversationSavingClient < Client
>      attr_reader :conversation
>      def initialize(*args)
>        super
>        @conversation = []
>      end
>
>      def do_rpc(request, async=false)
>        response = super(request, async)
>        @conversation << [request, response]
>        return response
>      end
>    end
> end
>
>
> client = XMLRPC::ConversationSavingClient.new('time.xmlrpc.com',
> '/RPC2', 80)
> client.call('currentTime.getCurrentTime')
> puts client.conversation.to_yaml
>
> $ ruby xmlrpc_conversation.rb
> ---
> - - |
>      <?xml version="1.0"
> ?><methodCall><methodName>currentTime.getCurrentTime</methodName><params/></methodCall>
>
>    - |
>      <?xml version="1.0"?>
>      <methodResponse>
>          <params>
>                  <param>
>
> <value><dateTime.iso8601>20070305T13:43:22</dateTime.iso8601></value>
>                          </param>
>                  </params>
>          </methodResponse>
>
>
> Is that helpful?
Alex Y. (Guest)
on 2007-03-06 12:19
(Received via mailing list)
Aa Aa wrote:
> HELPFULL!?!! Helpful is not the word. You should be elevated to god-like
> status :).
Now now, don't be too hasty - I'm only channelling the wonder of Matz
:-)


> Your solution exposed my embarrasing stupidity and lack of attention
> plus it taught me something.
We're all learning here - I don't think there's anything to be ashamed
of in asking a question if you honestly can't see a way through, even if
the answer does look obvious when you see it.  Hell, I've done it enough
times...

> Ruby does force me think harder at stuff
That's why I love it :-)

> Thanks again.
No worries.
This topic is locked and can not be replied to.