2010-08-04 8 views
6

C'est mon code.Comment mettre en œuvre les cookies dans Ruby Net :: HTTP

Maintenant, je dois envoyer un cookie à l'hôte, mais je ne peux pas trouver une solution.


def get_network_file(url=nil) 
    begin 
    http = Net::HTTP.new(@service_server, 80) 
    resp, data = http.get(url, { "Accept-Language" => @locale }) 
    if resp.code.to_i != 200 
     RAILS_DEFAULT_LOGGER.error "*** return code != 200. code = #{resp.code}" 
     return "" 
    end 
    rescue Exception => exc 
     RAILS_DEFAULT_LOGGER.error "*** message --> #{exc.message}" 
     return "" 
    end 
    return data 
    end 
end 

+0

double possible de [Comment mettre en œuvre cookies soutien net rubis/http] (http://stackoverflow.com/questions/1486703/how-to-implement-cookie-support-in-ruby-net-http) –

Répondre

5

Vous passez les cookies via le même hachage que vous envoyez l'en-tête "Accept-Language", quelque chose comme:

resp, data = http.get(url, { 
    "Accept-Language" => @locale, 
    "Cookie" => "YOUR_COOKIE" 
}) 

Les chances sont que vous aurez besoin de capturer le cookie d'abord, cependant. Voir this pour des exemples de manipulation de cookies.

+0

Merci. J'essaierai. – Juanin

2

Vous devez d'abord récupérer le cookie (s) de votre serveur à partir du champ d'en-tête « set-cookie » de la réponse du serveur (s). Une fois que vous avez récupéré le cookie (s), vous passez/eux dans l'en-tête « cookie » de la demande de votre client.

Cette question est posée déjà à How to implement cookie support in ruby net/http?

La réponse acceptée il y a bien moins que votre serveur renvoie un ensemble de cookies dans ce cas, vous voudrez peut-être regarder https://stackoverflow.com/a/9320190/1024480

+0

+1 ... deuxième lien beaucoup plus utile. –

Questions connexes