2011-03-21 111 views
19

我想在Rails 3中實現一個OAuth提供程序。當我嘗試授權客戶端應用程序時,出現此錯誤。我使用的是RESTful認證插件,並使用OAuth插件。當我通過Rails控制檯進行測試並發現這個錯誤時,我認爲我只需要對URL進行編碼,但在瀏覽器中測試時出現相同的錯誤,所以我不確定哪裏出錯。URI :: InvalidURIError(壞URI(不是URI?):):

回答

75

我陷入麻煩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

0

試試這個:

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

你能在你的答案中添加細節嗎? – Zulu 2014-10-11 03:31:56

相關問題