我正在尝试将我的Android应用程序中的一些数据发布到我电脑上的Sinatra。Sinatra通过以下方式监听:
post '/upload' do
puts "*****************************************"
puts "!!!!!!!! #{params.inspect}"
end并失败,出现以下错误:
ERROR NoMethodError: undefined method `rewind' for "ho":String
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:576:in`block in parse_multipart'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`loop'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/utils.rb:499:in`parse_multipart'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:270:in `parse_multipart'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/request.rb:148:in `POST'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/methodoverride.rb:15:in `call'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `block in call'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1303:in `synchronize'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/sinatra-1.2.6/lib/sinatra/base.rb:1272:in `call'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/content_length.rb:13:in `call'
D:/Ruby192/lib/ruby/gems/1.9.1/gems/rack-1.2.3/lib/rack/handler/webrick.rb:52:in `service'
D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
D:/Ruby192/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
D:/Ruby192/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'post参数是{"hey" => "ho"}。我打印出了rack/utils.rb中的body变量,并获得了"ho",我认为这就是Sinatra阻塞的原因。不过,我不知道为什么。投递到其他服务器成功。知道我哪里做错了吗?
我可以发布java代码,但是和java一样,它非常冗长。我也认为这不是问题所在,因为正如我所提到的,它确实可以成功地发布到远程服务器。
发布于 2011-07-04 22:27:33
post '/upload' do
puts "*****************************************"
puts "!!!!!!!! #{params.inspect}"
endSinatra将始终尝试使用最后返回的值作为数据进行解析,然后将其作为http数据发送。这里你的最后一条指令是返回nil的puts "!!!!!!!! #{params.inspect}"。
post '/upload' do
puts "*****************************************"
puts "!!!!!!!! #{params.inspect}"
"Information received"
end这里Sinatra有一些字符串可以使用,并且很高兴
https://stackoverflow.com/questions/6569770
复制相似问题