Handling cookies with Net::HTTP?

I am having a strange problem and it is partly due to my poor understanding of cookies. So any help is greatly appreciated.

I am trying to navigate through a site which requires that I provide them with the cookies they send me. I am having some trouble here. I am grabbing the 'set-cookie' header they send back to me and storing each cookie in a hash like: cookies[name] = value. Here is the code I wrote for that:

def parse_cookie(set_cookie)
     # Attempt to pull out SID, BID, CID
     @cookies ||= {}
     ['SID', 'BID', 'CID'].each do |var|
       cookie = set_cookie.scan(/(#{var}=.*?);/)
       cookie = cookie.join('').split('=')
       @cookies[cookie[0]] = cookie[1] unless cookie.size != 2
     end
   end

I only want the SID, BID, and CID cookies.

Then when I send another request to them I am doing the following:

def cookies
     cookie_str = ''
     @cookies.each do |k, v|
       unless cookie_str == ''
         cookie_str << ';'
       end
       cookie_str << k << '=' << v
     end unless @cookies.nil?
     cookie_str
   end

req.add_field 'Cookie', cookies #this calls the above method

Which ended up sending the following 'Cookie' header:

SID=VpI2zrrUjHDufXLqUec5VEWPia-JgWWQH3k-DPOxEhOKcvtZh46eZxw2xrAwK5N645v3B4oRAtoI0b8_;BID=bWtbrEQbrPcZmyvFQoXsZoqqWYrhV81w1698hx5-e1NUQZqE-tg9K9K36pt_CFIXcuW-FOkplULieRehl4t5;CID=tSqTx-fWLck-ncBcWaZNUNo-XhTUc-lM0xyHTe1VDmrZzVrMty0u3qSeAw4uTA6eW6Kl

Am I not sending the cookie header properly, because the site is not accepting them. Do I need to include more information than just the name and the value?

Thanks for your help.

Thank You,
Ben Johnson
E: bjohnson@contuitive.com

How about using mechanize so you don't have to worry about handling cookies
and other things like redirects.

http://www.ntecs.de/blog/Blog/WWW-Mechanize.rdoc

···

On Sat, Jul 15, 2006 at 07:37:23AM +0900, Ben Johnson wrote:

I am having a strange problem and it is partly due to my poor
understanding of cookies. So any help is greatly appreciated.

Well, mechanize does a lot I do not need it to. I am looking for as much speed as I can get and Net::HTTP seems to be quite a bit faster without a lot of the excess features that I do not need. I just need some help storing and sending cookies using Net::HTTP.

Thanks.

Thank You,
Ben Johnson
E: bjohnson@contuitive.com

···

On Jul 14, 2006, at 5:46 PM, Cliff Cyphers wrote:

On Sat, Jul 15, 2006 at 07:37:23AM +0900, Ben Johnson wrote:

I am having a strange problem and it is partly due to my poor
understanding of cookies. So any help is greatly appreciated.

How about using mechanize so you don't have to worry about handling cookies
and other things like redirects.

http://www.ntecs.de/blog/Blog/WWW-Mechanize.rdoc