URI :: InvalidURIError(坏URI(不是URI?):):

问题描述:

我想在Rails 3中实现一个OAuth提供程序。当我尝试授权客户端应用程序时,出现此错误。我使用的是RESTful认证插件,并使用OAuth插件。当我通过Rails控制台进行测试并发现这个错误时,我认为我只需要对URL进行编码,但在浏览器中测试时出现相同的错误,所以我不确定哪里出错。URI :: InvalidURIError(坏URI(不是URI?):):

我陷入麻烦URI.split(返回该错误),我不知道如果这能帮助你,但我会在这里发布一些警告,也有人有这样的错误:

  1. 检查您的网址不是零,这是一个有效的。
  2. 不要URI.encode(url)之前URI.parse(避免特殊字符)
  3. strip给你传递给URI.parse(以避免前导和尾部空格)的字符串。

All in one的:

uri = URI.parse(URI.encode(url.strip)) 

相关资源:http://www.practicalguile.com/2007/09/15/raising-uriinvalidurierror-from-a-perfectly-valid-uri/

+0

这样做仍然没有帮我拆了网址后,你的代码添加命名空间。对此有何建议?我能够在这里找到使用自定义uri部件匹配器的提示:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/uri/rdoc/URI.html#comment-726255789,我不知道该怎么重写我的问题(查询参数有字符不被'URI.split'接受)。 – thekingoftruth 2013-02-13 20:40:52

+0

实际上,我真的认为我会用简单的'ol正则表达式来实现我需要做的事情。 'URI.split'似乎是rfc3986的一个不完整的解析器,所以绕过它并避免一些头痛可能会更好。 – thekingoftruth 2013-02-13 20:44:45

+0

你会在哪里放置这个?在搜索控制器例如或在配置文件?谢谢! – 2015-01-22 16:14:31

试试这个:

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

你能在你的答案中添加细节吗? – Zulu 2014-10-11 03:31:56

您也可以使用这种替代URI宝石:https://github.com/sporkmonger/addressable

有一世它没有这样的问题。

非常原始,只是在安装宝石

Addressable::URI