开发者

Can I pass GET string in UserAgent post method

I call in this mode:

 my $ua = new LWP::UserAgent;
 my $response= $ua->post('www.example.com', {param1=>'val1',param2=>'val2'...} );

Can I call the above in the same way passing the values in GET form?:

 my $response= $ua->post('www.example.com?param=val1&param2=val2' );

It is because I'm using Firebug and when I go to Net tab under the "POST" tab it shows individual parameters as well as a GET string for POST submitted requests. So I was wondering if I use GET string in this function call.

Parametersapplication/x-www-form-urlencoded

Itemid 4 option com_search

searchword dsd task search Source

Content-Type:

application/x-www-form-urlencoded

Content-Length: 53

开发者_高级运维 searchword=dsd&task=search&option=com_search&Itemid=4


In short you can pass GET strings yes, but if your end code does not accept GET METHOD it will fail.

Also you might still need to specify some parameters since the post method asks for post(url,array_with_parameters).

sub post {
    require HTTP::Request::Common;
    my($self, @parameters) = @_;
    my @suff = $self->_process_colonic_headers(\@parameters, (ref($parameters[1]) ? 2 : 1));
    return $self->request( HTTP::Request::Common::POST( @parameters ), @suff );
}

Using along with HTTP::Request you can specify it at the content in the way you prefer:

# Create a user agent object
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("MyApp/0.1 ");

# Create a request
my $req = HTTP::Request->new(POST => 'http://www.example.com');
$req->content_type('application/x-www-form-urlencoded');
$req->content('searchword=dsd&task=search&option=com_search&Itemid=4');

# Pass request to the user agent and get a response back
my $res = $ua->request($req);

# Check the outcome of the response
if ($res->is_success) {
    print $res->content;
} else {
    print $res->status_line, "\n";
}

Read more...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜