RE: Posting to a form on the web

BAZLEY Sebastian (Sebastian.BAZLEY@sema.co.uk)
Fri, 26 Mar 1999 14:52:01 -0000


This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01BE7797.F331864E
Content-Type: text/plain;
	charset="iso-8859-1"

I had the same requirement when using webchatpp. The following worked for
me:

package LWP::UserAgent; # crude override
sub redirect_ok
{
    my($self, $request) = @_;
    $request->method("GET") if $request->method eq "POST"; # convert method
    1;
}

This produces a warning that the method redirect_ok is being overriden (I
was taking the crude way out, so did not bother to subclass).

In my case, I found that the POST method had to be converted to a GET,
otherwise I got an error from the application - "405 Method not allowed".
This may be specific to my application.

Sebastian Bazley
-----Original Message-----
From: Gisle Aas [mailto:gisle@aas.no]
Sent: 25 March 1999 21:20
To: webmaster@csg-i.com
Cc: libwww-perl@ics.uci.edu
Subject: Re: Posting to a form on the web


Rick Tuinenburg <rtuinenburg@csg-i.com> writes:

> I am using the following code to do this:
> 
>   # Create a user agent object
>   $ua = new LWP::UserAgent;
>   $ua->agent("AgentName/0.1 " . $ua->agent);
> 
>   # Create a request
>   my $req = new HTTP::Request POST => "$URL";
>   $req->content_type('application/x-www-form-urlencoded');
>   $req->content("$var1=$val1&$var2=$val2");
> 
> print "hello - ($SearchURL)";
>   # Pass request to the user agent and get a response back
>   my $res = $ua->request($req);
> 
>   # Check the outcome of the response
>       print $res->content;
> 
> This form on the web passes me another url which actually gives the
> result, so this little prog above says the following:
> 
> Object Moved
> 
> This object may be found here.
> 
> How do I make it go their automatically... I want the results...

The easiest way is probably to make a LWP::UserAgent subclass that
overrides the redirect_ok method so it returns TRUE for POST requests.
The default method look like this:

sub redirect_ok
{
    # draft-ietf-http-v10-spec-02.ps from www.ics.uci.edu, specify:
    #
    # If the 30[12] status code is received in response to a request using
    # the POST method, the user agent must not automatically redirect the
    # request unless it can be confirmed by the user, since this might
change
    # the conditions under which the request was issued.

    my($self, $request) = @_;
    return 0 if $request->method eq "POST";
    1;
}

-- 
Gisle Aas

------_=_NextPart_000_01BE7797.F331864E
Content-Type: application/ms-tnef
Content-Transfer-Encoding: base64

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
PTg4M1M3MUQ1RUQxOQAAHgD4PwEAAAARAAAAQkFaTEVZIFNlYmFzdGlhbgAAAAAeADhAAQAAAA0A
AAA4ODNTNzFENUVEMTkAAAAAAgH7PwEAAABTAAAAAAAAANynQMjAQhAatLkIACsv4YIBAAAABgAA
AC9PPVNFTUEvT1U9VUtMT04vQ049VUtMT04gTVNNQUlMIFVTRVJTL0NOPTg4M1M3MUQ1RUQxOQAA
HgD6PwEAAAARAAAAQkFaTEVZIFNlYmFzdGlhbgAAAAAeADlAAQAAAA0AAAA4ODNTNzFENUVEMTkA
AAAAQAAHMJBKM0KWd74BQAAIME6GMfOXd74BHgA9AAEAAAAFAAAAUkU6IAAAAAAeAB0OAQAAAB0A
AABQb3N0aW5nIHRvIGEgZm9ybSBvbiB0aGUgd2ViAAAAAAsAKQAAAAAACwAjAAAAAAADAAYQphHg
AQMABxDNBgAAAwAQEAAAAAADABEQAAAAAB4ACBABAAAAZQAAAElIQURUSEVTQU1FUkVRVUlSRU1F
TlRXSEVOVVNJTkdXRUJDSEFUUFBUSEVGT0xMT1dJTkdXT1JLRURGT1JNRTpQQUNLQUdFTFdQOjpV
U0VSQUdFTlQ7I0NSVURFT1ZFUlJJREUAAAAAfQM=

------_=_NextPart_000_01BE7797.F331864E--