------art_7416_3643987.1145641643975
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

I had a similar issue lately (not sure it is similar): I wanted to feed
extra headers when redirected.
I use http-access2 instead of net/http
Here's a sample code that worked for me.

#!/usr/bin/ruby

require 'http-access2'
require 'pp'

target = ARGV.shift || "http://localhost/foo.cgi"

clnt = HTTPAccess2::Client.new
clnt.debug_dev = STDERR

extheaders = []

clnt.set_cookie_store("cookie.dat")
clnt.redirect_uri_callback = lambda { |res|
  uri = res.header['Location'][0]
  if res.header['set-cookie']
    res.header['set-cookie'].each do |cookie|
        puts cookie
        puts uri
        extheaders << ['Cookie', cookie]
        #bug in cookie manager, does not work, the uril for the cookie
misses the first element pof the path
#        clnt.cookie_manager.parse(cookie, URI.parse(uri))
        end
  end
  clnt.save_cookie_store
  pp clnt.cookie_manager
  URI.parse(uri)
}

puts
puts '= GET content directly'
puts clnt.get_content(target, nil, extheaders)
puts '= GET result object'
result = clnt.get(target)
puts '== Header object'
p result.header
puts "== Content-type"
p result.contenttype
puts '== Body object'
p result.body
puts '== Content'
print result.content
puts '== GET with Block'
clnt.get(target) do |str|
  puts str
end
clnt.save_cookie_store



On 4/21/06, Xeno Campanoli <xeno / eskimo.com> wrote:
>
>
> Say, I thought I had this working at one point, but I don't now seem to be
> able to feed a user agent header to the get_response, nor the get method
> now.
> Presumably I was mistaken to believe I ever had it.  Can someone make a
> suggestion as to how I can feed an arbitrary HTTP header (most especially
> a
> UAH) to these methods?  Thanks.  My present code is as follows:
>
> #!/usr/bin/ruby
>
> require 'net/http'
> require 'uri'
> def fetch(uri_str, limit=10)
>   fail 'http redirect too deep' if limit.zero?
>   puts "Trying:  #{uri_str}"
>   begin
>     uah = <<EOUAH
> Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.7.10) Gecko/20050716
> Firefox/1.0.6
> EOUAH
>     response = Net::HTTP.get_response(URI.parse(uri_str),{'User-Agent' =>
> uah})
>     case response
>     when Net::HTTPSuccess
>       return response
>     when Net::HTTPRedirection
>       response = fetch(response['location'],limit-1)
>       return response
> #   else
> #     response.error!
>     end
>   rescue Timeout::Error, EOFError => kapow
>     STDERR.print "trace Net::HTTP::get failure:  #{uri_str}\n#{@uah}\n"
>     STDERR.print "trace Net::HTTP::get tc:    #{tryCount}\n"
>     STDERR.print "trace Net::HTTP::get kapow:    #{kapow}\n"
>   end
> end
> response = fetch('http://www.stage.rhapsody.com/genre?genreId=115')
> p response.body[500,55]
>
>
> I've tried several variasious on this, but this modification of the
> Pickaxe
> example illustrates most closely the set of things I'm trying to
> accomplish.
> Seems to me this should be pretty simple, right?  Also, here is my ruby
> -v:
>
> ruby 1.8.3 (2005-06-23) [i486-linux]
> xc
>
>


--
Patrick Chanezon, AdWords API evangelist
http://blog.chanezon.com/
http://www.google.com/apis/adwords/

------art_7416_3643987.1145641643975--