Ruby on rails 3 URI::InvalidURIError(错误的URI(不是URI?):

Ruby on rails 3 URI::InvalidURIError(错误的URI(不是URI?):,ruby-on-rails-3,oauth,Ruby On Rails 3,Oauth,我正在尝试在Rails 3中实现OAuth提供程序。当我尝试授权客户端应用程序时,会出现此错误。我正在使用restfulauth插件和pellesouth插件。当我通过Rails控制台进行测试并出现此错误时,我认为我只需要对URL进行编码,但在浏览器中进行测试时,我会遇到相同的错误,因此我不确定是什么问题。我遇到了URI.split(返回此错误)的问题,我不知道这是否有助于您,但我会在这里发布一些警告,提醒其他有此错误的人: 检查您的url是否为零,并且它是否有效 在URI.parse之前执行U

我正在尝试在Rails 3中实现OAuth提供程序。当我尝试授权客户端应用程序时,会出现此错误。我正在使用restfulauth插件和pellesouth插件。当我通过Rails控制台进行测试并出现此错误时,我认为我只需要对URL进行编码,但在浏览器中进行测试时,我会遇到相同的错误,因此我不确定是什么问题。

我遇到了
URI.split
(返回此错误)的问题,我不知道这是否有助于您,但我会在这里发布一些警告,提醒其他有此错误的人:

  • 检查您的url是否为零,并且它是否有效
  • URI.parse
    之前执行
    URI.encode(url)
    (以避免使用特殊字符)
  • 对传递给
    URI.parse的字符串执行
    strip
    (以避免前导空格和尾随空格)
  • 一应俱全:

    uri = URI.parse(URI.encode(url.strip))
    
    相关资源:

    试试这个:

    safeurl = URI.encode(url.strip)
    response = RestClient.get(safeurl)
    

    您还可以使用以下替代URI:

    它没有这样的问题

    非常原生,只需在安装gem后在代码中添加名称空间

    Addressable::URI
    

    我来这里是因为我遇到了快车道的问题。它是用Ruby编写的,因此我的回答会很有帮助

    在我的例子中,我有环境变量
    http\u proxy=XX.XX.XX.XX:XXXX
    https\u proxy=…

    当我将它们更改为
    http\u proxy=http://XX.XX.XX.XX:XXXX
    https\u代理=https://...
    问题已经解决。

    这样做仍然不能帮助我拆分url。有什么建议吗?我在这里找到了一个关于使用自定义uri部件匹配器的提示:,但我不确定要为我的问题覆盖什么(查询参数有
    uri.split
    不接受的字符)。实际上,我想我将使用普通的'ol regex来完成我需要做的事情
    URI.split
    似乎是rfc3986的一个不完整的解析器,所以最好绕过它,省去一些麻烦。你会把它放在哪里?例如,在搜索控制器中还是在配置文件中?谢谢<代码>'https://example.com/[%23R]%20'
    即使在
    URI.encode
    之后也会导致异常。您能在您的答案中添加详细信息吗?
    'https://example.com/[%23R]%20'
    即使在
    URI之后也会导致异常。encode
    此gem不应被视为替换。他们正在关闭需要一分钟以上思考的bug,原因是:“我不认为可寻址::URI和URI之间的兼容性是可寻址项目的目标”(c)