Могу ли я передать строку GET в методе поста UserAgent - PullRequest
0 голосов
/ 04 мая 2011

Я звоню в этом режиме:

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

Могу ли я вызвать вышеуказанное таким же образом, передавая значения в форме GET?:

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

Это потому, что я использую Firebug и когда я перехожу на вкладку Net на вкладке "POST", он показывает отдельные параметры, а также строку GET для запросов, отправленных POST. Поэтому мне было интересно, использую ли я строку GET в этом вызове функции.

Parametersapplication / х-WWW-форм-urlencoded
Itemid 4 option com_search
searchword dsd task search Источник
Content-Type:
применение / х-WWW-форм-urlencoded
Длина контента: 53
= DSD Слово для поиска и задачи = поиск и опция = com_search & Itemid = 4

1 Ответ

2 голосов
/ 04 мая 2011

Короче говоря, вы можете передать GET-строки да, но если ваш код завершения не принимает GET METHOD, он потерпит неудачу.

Также может потребоваться указать некоторые параметры, так как метод post запрашивает 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 );
}

Используя вместе с HTTP::Request, вы можете указать его для контента так, как вы предпочитаете:

# 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";
}

Подробнее ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...