--_165a2b1e-9c1d-4bc3-8be9-2b460a129089_
Content-Type: text/plain; charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable


You probably want to look at the Mechanize gem instead. It'll be much easier than working with Net::HTTP, which is a pain. Also, it handles cookies automatically. Go to this link: http://mechanize.rubyforge.org/mechanize/README_rdoc.html

- Ehsan

> Date: Fri, 18 Sep 2009 04:25:04 +0900
> From: freephoneid / yahoo.com
> Subject: How to fetch Cookie from response
> To: ruby-talk / ruby-lang.org
> 
> Hi,
>    I'm trying to write a program which will try to login to my web site
> by passing user & password. The site is in ASP.net for which I'm trying
> to authenticate.
> 
>    Somehow, I'm having problem with fetching cookies from the response &
> passing it to next request.
> 
>    Can you please tell me how to retrieve cookies from response in ruby?
> I do not want to extract just set-cookie as I tried that & its not
> working. Some how its not giving me complete cookie & hence I'm getting
> back the login page itself.
> 
>    Here is the code snippet
> [code]
>       servicehost = Config::ADMIN_HOST
>       serviceport = Config::ADMIN_PORT
>       accountname = Config::ADMIN_ACCOUNT_NAME
>       accountpwd = Config::ADMIN_ACCOUNT_PWD
>       monitorid = Config::USER_AGENT
>       loginpage = Config::ADMIN_LOGINPAGE
> 
>       http = Net::HTTP.new(servicehost, serviceport)
>       http.use_ssl = false
>       http.verify_mode = OpenSSL::SSL::VERIFY_NONE
>       http.start do |http|
> 
>   request1 = Net::HTTP::Get.new(loginpage, {"User-Agent" => monitorid})
>   response1 = http.request(request1)
>   puts "1st Code = #{response1.code}"
> 
>   location = response1.response['location']
>   puts "location=#{location}"
> 
>   request1 = Net::HTTP::Get.new(location, {"User-Agent" => monitorid})
>   response1 = http.request(request1)
> 
>   puts "2nd Code = #{response1.code}"
>   puts "2nd cookie= #{response1.response['set-cookie']}"
> 
>   /__VIEWSTATE" value="(.*)"/.match(response1.body)
>   viewstate = $1
> 
>   /WebForm_Do(.*)"/.match(response1.body)
>   eventvalidation = $1
>   eventvalidation = URI.escape(eventvalidation)
> 
>   puts eventvalidation
> 
>         req = Net::HTTP::Post.new(location, {"User-Agent" => monitorid,
> 'Content-Type' => 'application/x-www-form-urlencoded'})
> 
>         req.set_form_data({'txtLogin_LoginPage'=>accountname,
> 'txtPassword_LoginPage'=>accountpwd, 'btnLogin'=>'Login',
> '__EVENTTARGET'=>'', '__EVENTARGUMENT'=>'',
> '__EVENTVALIDATION'=>eventvalidation, '__VIEWSTATE'=>viewstate})
> 
>         response = http.request(req)
> 
>         redirect = false
>         case response
>           when Net::HTTPSuccess
>             #puts "OK"
>           when Net::HTTPRedirection
>             redirect = true
>           else
>             inerror = true
>         end
> 
>         puts "3rd Code = #{response.code}"
>         puts "Message = #{response.message}"
> 
>         response.each {|key, val| printf "%s= %s\n", key, val }
>         resp = response.body
> 
>         if redirect
>           request = Net::HTTP::Get.new(loginpage, {"User-Agent" =>
> monitorid})
> 
>       # Below line some how does not work. Can some one provide cookie
> container object code?
>           request.add_field 'Cookie', response.response['set-cookie']
> 
>           response = http.request(request)
>           resp = response.body
>           print resp
>         end
>       end
> 
> [/code]
> -- 
> Posted via http://www.ruby-forum.com/.
> 
 		 	   		  
_________________________________________________________________
Microsoft brings you a new way to search the web.  Try  Bingnow
http://www.bing.com?form=MFEHPG&publ=WLHMTAG&crea=TEXT_MFEHPG_Core_tagline_try bing_1x1-_165a2b1e-9c1d-4bc3-8be9-2b460a129089_--