2010-04-16 44 views
27

創建方法時,我有一個非常簡單的控制器設置:的WEBrick :: ::的HTTPStatus錯誤LengthRequired在訪問控制器

class LibrariesController < ApplicationController 

... 

    def create 
    @user.libraries << Library.new(params) 
    @user.save 
    render :json => "success!" 
    end 

... 

end 

基本上,只要我試圖訪問使用LibrariesController的創建方法HTTParty.post我在服務器上得到一個WEBrick :: HTTPStatus :: LengthRequired錯誤。該方法甚至沒有被訪問!這裏是堆棧跟蹤(這是完整的輸出服務器端 - 請注意,控制器甚至沒有被訪問):

[2010-04-16 00:35:39] ERROR WEBrick::HTTPStatus::LengthRequired 
[2010-04-16 00:35:39] ERROR HTTPRequest#fixup: WEBrick::HTTPStatus::LengthRequired occured. 
[2010-04-16 00:35:39] ERROR NoMethodError: private method `gsub!' called for #<Class:0x2362160> 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/htmlutils.rb:17:in `escape' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpresponse.rb:232:in `set_error' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpserver.rb:70:in `run' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:95:in `start' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `each' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `start' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:23:in `start' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:82:in `start' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:14:in `run' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:111 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    script/server:3 

我運行軌道2.3.5和1.8.7的紅寶石。任何幫助將不勝感激。讓我知道你是否需要更多細節。

回答

1

我不知道這是否仍是相關的WEBrick或如果已經被固定的,但有你有試過gem install mongrel和你正在Read line 2 on this TODO page on RubyForge

錯誤與雜種或其他運行它一個已知問題紅寶石服務器?

+0

這是事實 - 然而,這條消息是在2008年編寫的,它也表示這個錯誤是「低優先級」。我不知道如果我已經配置了一些錯誤...... 當我與雜種狗跑,我得到以下錯誤: 的ActionController :: InvalidAuthenticityToken(ActionController的:: InvalidAuthenticityToken): 渲染救援/ _trace(178.6ms) 渲染救援/ _request_and_response(1.5ms) 渲染救援/佈局(unprocessable_entity) hmmmmmm ... – 2010-04-16 17:10:31

+0

是的,你是對的克里斯,但這是唯一可能的錯誤解釋。然而,Mongrel錯誤並不那麼神祕,最近我看到一個類似的問題,那時我正在開會。你的會議商店是什麼?你有會話密鑰和祕密設置? – konung 2010-04-16 21:07:30

+0

切換到雜種對我來說確實有效:) – 2011-09-25 03:11:10

64

我得到這個時,我做了一個空的身體POST。我正在使用捲曲。

喜歡的東西:

curl -X POST http://url/ 

我加-d '',它清除了這個問題。

curl -X POST http://url/ -d '' 

在你的情況,你可能需要添加一些內容到:體=>'屬性在HTTParty.post

+0

無論如何,在沒有添加'-d'''來模擬正在發送的任何東西時,無論如何我都不會發送任何東西? – Pred 2015-09-01 00:18:06

+1

如果您切換到另一個Web服務器,例如瘦,它不需要發送一個空白的身體。 – littleforest 2015-12-15 19:02:33

8

使用:body代替:query上後,把請求。

0

我也有同樣的問題,剛纔我已經解決了它。對我來說,這是請求標題值中的換行符問題。只要WEBrick服務器獲得請求表單瀏覽器或其他客戶端,它就會將請求發送給您的應用程序,並立即用ERROR WEBrick::HTTPStatus::LengthRequired返回代碼411。

因此,在放置標題值之前,您可以刪除所有的換行符。