【问题标题】:Ruby 2.0p0 and XMLRPC::ClientRuby 2.0p0 和 XMLRPC::Client
【发布时间】:2013-03-16 11:11:44
【问题描述】:

我遇到了 Ruby 2.0p0 和 XMLRPC::Client 的问题。当我在 2 个不同版本的 ruby​​ 中运行下面的代码时,我在 1.9.3 上得到了正确的响应,但在 2.0.0 上得到了错误。有同样问题的人吗?解决方案是不使用最新版本的 ruby​​ 还是有解决方法?

require "xmlrpc/client"

server = XMLRPC::Client.new2('http://api.flickr.com/services/xmlrpc/')
begin
  res = server.call('flickr.test.echo')
  puts res
rescue XMLRPC::FaultException => e
  puts e.faultCode
  puts e.faultString
end

使用 ruby-1.9.3-p392 [ x86_64 ]

我从 flickr 得到了正确的响应,因为我没有提供 API 密钥:

100
Invalid API Key (Key has invalid format)

使用 ruby-2.0.0-p0 [ x86_64 ]

我从 ruby​​ 收到一条错误消息,提示“大小错误。原为 365,应为 207 (RuntimeError)”

/home/luisramalho/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/xmlrpc/client.rb:506:in `do_rpc': Wrong size. Was 365, should be 207 (RuntimeError)
    from /home/luisramalho/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/xmlrpc/client.rb:281:in `call2'
    from /home/luisramalho/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/xmlrpc/client.rb:262:in `call'
    from xmlrpc.rb:5:in `<main>'

【问题讨论】:

    标签: ruby xml-rpc


    【解决方案1】:

    我为此提出了一个补丁。让我们看看团队对此有何看法。

    https://github.com/ruby/ruby/pull/308

    【讨论】:

    【解决方案2】:

    我在使用 ruby​​2 访问不同的 xml rpc api(upcdatabase.com's)时遇到了类似的问题(说真的,谁还在使用 xml rpc api?)。

    我的解决方案是使用与 ruby​​ 默认不同的 xmlrpc 库。 LibXML-XMLRPC。它使用 c 扩展,应该比标准库更快,但它最后一次更新是在 2008 年,所以谁知道今天这个说法有多真实。

    这就是我的代码最终奏效的原因。

    require 'xml/libxml/xmlrpc'
    require 'net/http'
    net = Net::HTTP.new("www.upcdatabase.com", 80)
    
    server = XML::XMLRPC::Client.new(net, "/xmlrpc")
    result = server.call('lookup', 'rpc_key' => "YOLOSWAG", 'upc' => "071160055506")
    

    希望这会有所帮助。

    【讨论】:

    • 感谢 Ken 的帮助,您的解决方案确实有效……但是我仍在寻找 ruby​​ 的默认库。
    • 默认库的解决方法是添加 server.http_header_extra = { "accept-encoding" => "identity" } ruby-forum.com/topic/4412475
    • Dokuwiki 使用 XML-RPC API
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    • 2017-06-06
    • 2013-12-24
    相关资源
    最近更新 更多