2009-11-17 8 views
0

J'ai le code suivantRuby http erreur - format incorrect Content-Length

url = URI.parse("http://localhost:3100/tasks/#{id}.xml") 
http = Net::HTTP.new(url.host, url.port) 

# Make request 
response = http.start do |http| 
    http.get(url.request_uri) 
end 

Chaque fois que ce code est exécuté, il renvoie l'erreur suivante

Net::HTTPHeaderSyntaxError in TasksController#show 
wrong Content-Length format 

Est-ce que quelqu'un sait ce qui se passe mal ici?

Merci, Josh

Répondre

3

Hmm, ce code ne semble pas correcte:

response = http.start do |http| 

La variable que vous passez à votre bloc ne devrait pas avoir le même nom qu'une variable existante. Vous pouvez vouloir quelque chose de plus comme ce qui est dans the docs.

require 'net/http' 

url = URI.parse('http://www.example.com/index.html') 
req = Net::HTTP::Get.new(url.path) 
res = Net::HTTP.start(url.host, url.port) {|http| 
    http.request(req) 
} 
puts res.body 
0

Votre code fonctionne quand je tiens à, par exemple, http://www.google.com, donc je pense que votre serveur est crachait quelque chose qui donne l'indigestion Net :: HTTP. Essayez d'ajouter cette ligne juste après votre appel à HTTP.new:

http.set_debug_output($stderr) 

Cela devrait crachent toute transaction à l'écran. J'imagine que vous trouverez quelque chose d'étrange avec le champ Content-Length dans l'en-tête de réponse (Net :: HTTP s'attend à trouver une chaîne de chiffres dans ce champ). Si ce n'est pas évident à partir de ce qui est le problème, alors publiez cette sortie (ou au moins la partie en-tête de la réponse) ici et laissez ces gars intelligents y aller.

Questions connexes