2010-08-04 12 views
6

Questo è il mio codice.Come implementare i cookie in Ruby Net :: HTTP

Ora ho bisogno di inviare un cookie all'host ma non riesco a trovare una soluzione.


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

possibile duplicato del [biscotto Come implementare supporto in ruby ​​net/http?] (http://stackoverflow.com/questions/1486703/how-to-implement-cookie-support-in-ruby-net-http) –

risposta

5

si passa cookie tramite lo stesso hash si sta inviando il "Accept-Language" intestazione, qualcosa di simile:

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

probabilità sono avrete bisogno di catturare il primo cookie, però. Vedi this per esempi di gestione dei cookie.

+0

Grazie. Ci proverò. – Juanin

2

È necessario innanzitutto recuperare i cookie dal proprio server dai campi di intestazione "set-cookie" della risposta del server. Dopo aver recuperato i cookie, li si passa/li nell'intestazione "cookie" della richiesta del cliente.

Questa domanda è chiesto già a How to implement cookie support in ruby net/http?

La risposta accettata non va bene a meno che il server restituisce un insieme di cookie, nel qual caso si consiglia di guardare https://stackoverflow.com/a/9320190/1024480

+0

+1 ... secondo link molto più utile. –

Problemi correlati