#perl
#perl
Вопрос:
Я вызываю в этом режиме:
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=val1amp;param2=val2' );
Это потому, что я использую Firebug, и когда я перехожу на вкладку Net на вкладке «POST», он показывает отдельные параметры, а также строку GET для отправленных запросов POST.
Итак, мне было интересно, использую ли я GET string в этом вызове функции.
Параметрыприложение /x-www-form-urlencoded
Itemid 4 опция com_search
searchword задача dsd поиск источника
типа содержимого:
application/x-www-form-urlencoded
Content-Длина: 53
поисковое слово = dsd amp;task = searchamp;option =com_searchamp;Itemid = 4
Ответ №1:
Короче говоря, вы можете передать GET strings да, но если ваш конечный код не принимает МЕТОД GET, он завершится неудачей.
Также вам все еще может потребоваться указать некоторые параметры, поскольку метод 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 );
}
Используя along with 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=dsdamp;task=searchamp;option=com_searchamp;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";
}
Комментарии:
1. Предположим, я ввел «привет» в текстовое поле комментариев. Итак, firebug показывает «привет там» в качестве параметра. В $req-> content должен ли я затем использовать это значение с » » или как исходное значение?
2. @AgA Я так не думаю, нет, поскольку это отправляется по почте, вы можете распечатать его на странице, на которой вы его получаете, чтобы убедиться в этом.
3. @AgA просто чтобы убедиться в этом, я запустил тест, и его не нужно каким-либо образом кодировать, если вы отправляете его с приведенным выше кодом. Он будет отправлен как post просто отлично.