In article <[EMAIL PROTECTED]>,
 I wrote:
>I predict that if you insert
>
>       BEGIN { $|=1; print "Content-type: text/plain\n\n" }
>
>after the #! line of that script, you will see something illuminating when
>you next visit it through a browser.

Boy, do I have egg on my face.  I didn't pay attention to the question
and just saw the 500 server error message - thought it was a CGI program,
didn't see that it was browser masquerading.  My apologies to Guy.

I took the script, ripped out the database part, and ended up with what's
below.  It doesn't have the problem described; it fetches a page just fine.
All I can think is that since you set a 15-second timeout that you were
having network problems that day that made it a bit slow to connect to that
site.  Try this again, and if you get the same problem, try accessing the
URL that your program wants to fetch from a browser or with the GET program
that comes with LWP.

The only problem I found was that the script makes a new URI::URL object
and yet there is no "use URI::URL".  So I don't understand how it compiled;
it should have said

 Can't locate object method "new" via package "URI::URL"
 (perhaps you forgot to load "URI::URL"?) 

#!/usr/bin/perl -w
use strict;

use LWP::UserAgent;
use URI::URL;
my $VERBOSE=1;

@MyAgent::ISA = qw(LWP::UserAgent);
sub MyAgent::redirect_ok {
  my ($self,$request)=@_;
  if ($request->method eq "POST") {
    $request->method("GET");
  }
  return 1;
}

gettraffic("foo");

sub gettraffic {
        my ($keyword) = @_;
        my $traffic=0;

        my $url         =
"http://inventory.overture.com/d/searchinventory/suggestion/?term="; . $keyword;
        my $ua          = new MyAgent;
        my $agent       = 'Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)';

        ## Set some User Agent properties.
        $ua->agent($agent);
        $ua->timeout(15);

        ## Convert the URL into a url object (with a couple methods we can use).
        my $u =  new URI::URL( $url );
        
        ## Fetch the web page.
        my $req = HTTP::Request->new(GET=>$u->as_string);
        my $res = $ua->request($req);
        my $resstring = $res->as_string;
        
        print "URL: $url\n" if ($VERBOSE);
        print "$resstring\n" if ($VERBOSE);

        # Check the outcome of the response
        if ($res->is_success) {
                my $content = $res->content;
                $content =~ m/.*&nbsp;([0-9]+)<\/b>.*/s;
                my $traffic = $1;
                if (!$traffic) {
                        $traffic = 0;
                }
                
        } 
}


-- 
Peter Scott
http://www.perldebugged.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to