2012-09-08 6 views
8

Actualmente estoy golpeando mi cabeza contra la pared varias veces hasta que pase este problema. Estoy usando ruby-1.9.3-p194 y Rails. Estoy intentando hacer una solicitud posterior que puedo hacer bien con Net :: HTTP.post_form, pero no puedo usar eso aquí porque necesito establecer una cookie en el encabezado. http.post se erroring diciendoRoR Net :: error en la publicación de HTTP método indefinido `bytesize '

"undefined method `bytesize' for #<Hash:0xb1b6c04>" 

porque supongo que está tratando de realizar alguna operación sobre los datos que se envían.

¿Alguien tiene algún tipo de solución o problema?

Gracias

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) 

Respuesta

16

El método está en bytesizeString, no Hash. Esa es tu primera pista. La segunda pista es la documentación para Net::HTTP#post:

post (trayectoria, datos, initheader = nil, dest = nil)

Mensajes data (debe ser una cadena) a path. header debe ser un hash como {'Accept' => '/', ...}.

usted está tratando de pasar un hash, {'test' => 'test'}, a post donde se espera ver una String. Creo que quieres algo más así:

http.post(uri.path, 'test=test', headers) 
+0

Ah, gracias, lol. Lo engañé. – James

+0

http://stackoverflow.com/questions/798710/how-to-turn-a-ruby-hash-into-http-params –

Cuestiones relacionadas