我正在反复敲打我的头,直到我通过这个问题.我正在使用
ruby-1.9.3-p194和Rails.我正在尝试发布一个帖子请求,我可以用Net :: HTTP.post_form做得很好,但我不能在这里使用它,因为我需要在标题中设置一个cookie. http.post说错了
"undefined method `bytesize' for #<Hash:0xb1b6c04>"
因为我猜它正试图对正在发送的数据执行一些操作.
有没有人有某种修复或解决方法?
谢谢
headers = {'Cookie' => 'mycookieinformationinhere'} uri = URI.parse("http://asite.com/where/I/want/to/go") http = Net::HTTP.new(uri.host,uri.port) response = http.post(uri.path,{'test' => 'test'},headers)
解决方法
bytesize
方法是String,而不是Hash.那是你的第一个线索.第二个线索是
Net::HTTP#post
的文档:
post(path,data,initheader = nil,dest = nil)
Posts
data
(must be a String) topath
.header
must be a Hash like { ‘Accept’ => ‘/’,… }.
你正试图传递哈希,{‘test’=> ‘test’},发布它希望看到字符串的位置.我想你想要更像这样的东西:
http.post(uri.path,'test=test',headers)