Shizzle has asked for the wisdom of the Perl Monks concerning the following question:

Hello fellow monks:

Using some past wisdom I successfully did an address search on USPS's website. I modified my program slightly to report any problems if one occurred:

#!/opt/gnu-irix/bin/perl use strict; use HTTP::Request::Common qw(POST); use LWP::UserAgent; my $ua = new LWP::UserAgent; my $req = POST 'http://www.usps.com/cgi-bin/zip4/zip4inq2', [ 'Firm' => '', 'Urbanization' => '', 'Delivery Address' => '3601 Fallstone Court', 'City' => '', 'State' => '', 'Zip Code' => '20744', 'Submit' => 'Process' ]; my $resp = $ua->request($req); if ($resp->is_success()) { print $resp->content(); } else { print "Problem\n\n", $resp->as_string(); }

I ran the program and got the following:

Problem HTTP/1.0 302 (Found) Not Allowed Location: http://148.129.65.3:80/fwauthredirect148.129.65.9id000030890 +2 Content-Length: 120 Content-Type: text/html Client-Date: Wed, 24 Apr 2002 17:36:41 GMT Client-Peer: 56.0.78.101:80 Your request is being redirected to :<a href="http://148.129.65.3:80/f +wauthredirect148.129.65.9id000308902">here</a>.
I typed in the "here" link and got a MSIE "Page Not Found" message. Normally, that wouldn't bother me, but I was able to use the browser, fill out the form and get a response. Is USPS's server somehow detecting that I'm trying to access their server via LWP?? Your help is greatly appreciated.

Replies are listed 'Best First'.
Re: POSTing with LWP -- again (uggh)
by jsprat (Curate) on Apr 24, 2002 at 19:56 UTC
    This looks like a firewall problem. Try the following after the new but before the POST:

    $ua->proxy(['http', 'ftp'], 'http://proxy.sn.no:8001/');

    Of course, substitute your proxy and port for the sample:)
    BTW, this is lifted straight from 'perldoc LWP::UserAgent'. If you need authentication, check out the 'credentials' section.
Re: POSTing with LWP -- again (uggh)
by Shizzle (Novice) on Apr 24, 2002 at 18:02 UTC
    Even as I was typing this request for help, I kept trying my program again, hoping that the problem was temporary. Just a minute ago, I ran the program and got back some real data. However, I still don't understand why I got a 302 error - in my perl script, I attempted to post to:

    http://www.usps.com/cgi-bin/zip4/zip4inq2
    During those times that the script was yielding a 302 error, I could still go to USPS.com, fill out the form, and, when the results came back, the URL would show:

    http://www.usps.com/cgi-bin/zip4/zip4inq2

    so what was the catch? Thanks in advance for your help.