URI :: InvalidURIError用于不能编码的URI

时间:2013-09-05 19:06:22

标签: ruby httparty

我使用httparty来取消短链接,我发生了以下情况:

HTTParty.get('http://bit.ly/19NoFfn', limit: 50 )

当扩大产量时:

https://sublime.wbond.net/packages/PhpSpec Snippets

显然抛出了一个:URI :: InvalidURIError。

是否可以将一些参数传递给httparty,以便在尝试跟踪URI之前自动尝试对URI进行编码?

1 个答案:

答案 0 :(得分:2)

我解决了我的问题:

def unshorten(uri)
  begin
    response = HTTParty.get(uri, limit: 50)
  rescue URI::InvalidURIError => error
    bad_uri = error.message.match(/^bad\sURI\(is\snot\sURI\?\)\:\s(.*)$/)[1]
    good_uri = URI.encode bad_uri
    response = self.unshorten good_uri
  end
  response
end

我从错误消息字符串中获取URI感觉不太舒服,但似乎没有其他办法。还是有吗? :)