Http requests return a two-element array with the response and the data.

try :
def testget filename
#...
 response,data = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
 data
#
test = testget(filename).split

-Adam

On 7/19/06, John Fink <john.fink / gmail.com> wrote:
> On 7/19/06, Philip Hallstrom <ruby / philip.pjkh.com> wrote:
> >
> > > I'm attempting to write a little program that uses the Net::HTTP library
> > to
> > > fetch a text file.  The text file has lines broken up by newlines, and I
> > > thought I could use the .to_a method to convert a variable into an
> > array,
> > > but when I do it it puts the entire text file into the first marker on
> > the
> > > array, and the rest are nil.
> > >
> > > Here's the program.  I know I'm missing something grotesquely obvious,
> > and
> > > thanks in advance for beating me with the clue stick.
> > >
> > > What I expected was for test to return what it returns, but test2[0] to
> > > return "This" and test2[1] to return "is".  Test2[0] returns identical
> > > results to test.
> > >
> > > jf
> > > ---
> > >
> > > require 'net/http'
> > > require 'uri'
> > >
> > > filename = 'test.txt'
> > >
> > > def testget(filename)
> > > url = URI.parse('http://vineland.lib.muohio.edu/' + filename  )
> > > req = Net::HTTP::Get.new(url.path)
> > > res = Net::HTTP.start(url.host, url.port) {|http| http.request(req) }
> > > end
> > >
> > > test = testget(filename)
> > > test2 = test.to_a
> >
> > test2 = test.split(/[\n\r]+/)
> >
> > > puts test
> > > puts test2[0]
> > > puts test2[1]
> >
> > that would "eat" blank lines though, but gets you closer...
> >
> >
> >
>
> Aha, split.  I've now tried split on arbitrary lines in irb, and it works on
> them.  But trying split in my little program here yields the following
> error:
>
> testget.rb:13: private method `split' called for #<Net::HTTPOK 200 OK
> readbody=true> (NoMethodError)
>
> Googling this hairy error gives me no leads.
>
> jf
>
>