open-uri 414 Request-URI Too Large

J

Jay 99

I am hitting a wall. This is my first attempt at ruby programming and I
am sure my code leaves a lot to be desired...be gentle.

I have a csv file I am loading into an array, it contains static pieces
of a url that i build other urls from.

It will loop through the first 10 in the array and always works. Number
11 always fails with:

C:/Ruby/lib/ruby/1.8/open-uri.rb:277:in `open_http': 414 Request-URI Too
Large (
OpenURI::HTTPError)
from C:/Ruby/lib/ruby/1.8/open-uri.rb:616:in `buffer_open'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:164:in `open_loop'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `catch'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:162:in `open_loop'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:132:in `open_uri'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:518:in `open'
from C:/Ruby/lib/ruby/1.8/open-uri.rb:30:in `open'

So I shift my loop to start at 11 to the end and after the 10th time in
the loop it fails. Shift it again by 10, same thing. A total of 58 array
elements, csv file size is 44 KB. Rules out the data right?

Leads me to believe that I have a memory problem or maybe I need to
clear out the variable. The array data contains passwords and usernames
so I will sanitize them and upload if needed.

Here is the basic code.

require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'csv'

fluffers = Array.new

urlA =
"http://mywebpage.com/fight.php?investor_id=67814104&action=status"
urlB = "http://mywebpage.com/bank.php?amount="
urlB2 = "&action=Deposit&do=Deposit"
urlH = "http://mywebpage.com/holy.php?cost=&action=Get personal"
urlS = "http://mywebpage.com/index.php?"

# Populate the array with the static information
CSV.open('z:/ruby/invest2.csv', 'r') do |row|
fluffers.push row
end

i = 0
until i == fluffers.length
doc = Hpricot(open(urlStatus << fluffers.to_s))
inMoney =
doc.search("//strong[@class='money']").inner_html.gsub(/\D/,'')
inHoly = (doc/"#current_holy").inner_html
inEnergy = (doc/"#current_energy").inner_html
inStock = (doc/"#current_stock").inner_html

if inMoney.to_i > 0
open(urlB + inMoney + urlB2 + fluffers.to_s)
print "deposit\n"
end

inStock.to_i.times do
if inHoly.to_i < 20
open(urlH + fluffers.to_s)
end
open(urlA + fluffers.to_s)
print "a\n"
doc = Hpricot(open(urlS << fluffers.to_s))
inHoly = (doc/"#current_holy").inner_html
print inHoly
end
i += 1
end

Thank You!
 
B

Ben Lovell

[Note: parts of this message were removed to make it a legal post.]

Look at these lines:
doc = Hpricot(open(urlStatus << fluffers.to_s))

And


doc = Hpricot(open(urlS << fluffers.to_s))



the urlStatus and urlS are getting larger each time this is called. You want
to check which URI is being used as from the error message you get, it is
clearly too large.

Ben
 
J

Jay 99

Ben said:
the urlStatus and urlS are getting larger each time this is called. You want
to check which URI is being used as from the error message you get, it is
clearly too large.

Ben

Thanks!!! I changed it to a constant and it worked as needed.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,830
Latest member
ZADIva7383

Latest Threads

Top