我正在反复撞墙,直到我通过这个问题。我正在使用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)
答案 0 :(得分:16)
String
方法位于Hash
,而不是data
。那是你的第一个线索。第二个线索是bytesize
的文档:
帖子(路径,数据,initheader = nil,dest = nil)
帖子
path
(必须是字符串)到header
。{'test' => 'test'}
必须是Hash,例如{'Accept'=&gt; '/',...}。
您正试图将哈希post
传递给String
,希望看到http.post(uri.path, 'test=test', headers)
。我想你想要更像这样的东西:
{{1}}