Haciendo pruebas unitarias y funcionales con FeedValidator me encuentro con que en ruby 1.8.4, Net::HTTP#post tiene un bug, el bug ya fue corregido a finales de Junio 2006 en el trunk de ruby.
(ver http://rubyforge.org/tracker/?func=detail&atid=1698&aid=4782&group_id=426)

Básicamente el problema es que en ruby 1.8.4, net/http no envía por defecto el header Content-Type.

Usualmente uno haría un post de esta forma:

RUBY:
  1. response = Net::HTTP.start('validator.w3.org',80)
  2.                   .post('/feed/check.cgi',params)

Sin embargo, como en ruby 1.8.4 el header del Content-Type no es fijado por defecto a 'application/x-www-form-urlencoded', en algunos casos, dependiendo del servidor al que se intenta enviar el requerimiento, este no lo procesará adecuadamente. Tal es el caso del W3C Feed Validation online service.

La solución es especificar el Content-Type:

RUBY:
  1. headers = ::VERSION == "1.8.4" ? {'Content-Type'=>'application/x-www-form-urlencoded'} : {}
  2. response = Net::HTTP.start('validator.w3.org',80)
  3.                   .post('/feed/check.cgi',params,headers)

Ya generé una nueva versión del FeedValidator (v0.1.1) que incluye esta consideración.


0 Respuestas a “Bug en Net::HTTP#post en ruby 1.8.4”

  1. Ningún Comentario

Añade un Comentario





RSS feeds

Suscríbete a nuestros RSS Feeds