2016-08-09 4 views
-1

Мне нужно создать скрипт, который обращается к веб-сайту, отправляет запрос, «нажимает» на одно из хитов и отправляет обратно URL-адрес результата. То, что я застрял, является отправкой запроса в первую очередь. Вот что у меня есть:Perl LWP: отправка запроса - ошибка 400 URL должен быть абсолютным

use strict; 
use warnings; 
use LWP::UserAgent; 
my $entry = $ARGV[0] or die; 
my $url = 'http://genome.ucsc.edu/cgi-bin/hgBlat?hgsid=502819467_w6Oj12MTSqOIIJuSjAKsza4x9yeA&command=start'; 
my $browser = LWP::UserAgent->new; 
my $response = $browser->post(
    '$url', 
    [ 
    'sequence' => $entry, 
    'search' => 'submit' 
    ], 
); 
die "Error: ", $response->status_line 
unless $response->is_success; 

я получаю эту ошибку: Ошибка: 400 URL должен быть абсолютным в LWPtest.pl линии 14. Может ли кто-нибудь объяснить, что это значит, и как я должен решить эту проблему? Также как я подхожу к «кликам» на одном из хитов и отправляет обратно URL-адрес результата «бит»?

EDIT:

Я нашел это на сайте в вопрос:

When including a Genome Browser URL, please remove the hgsid parameter. It is an internally-used parameter that expires after about a day.

Не уверен, если это является частью проблемы; это может стать проблемой после «около дня».

+0

Для Вашего потребительной случае https://metacpan.org/pod/WWW::Mechanize имеет больше смысла, чем с помощью LWP :: UserAgent , Это подкласс, который упрощает клики и в основном ведет себя как браузер без поддержки JavaScript. – simbabque

ответ

0

Код

'$url' 

производит Строка 4-символьный

$url 

вместо

http://genome.ucsc.edu/cgi-bin/hgBlat?hgsid=502819467_w6Oj12MTSqOIIJuSjAKsza4x9yeA&command=start 

Просто замените

'$url' 

с

$url 
1

$ url on line ~ 10 в одинарных кавычках, что означает, что это символьная последовательность $ u r l вместо значения переменной $ url.

'$url', 

к

$url, 
+1

Чтобы сделать ваш ответ лучше, вы должны включить этот полный оператор из кода и показать, как это сделать. – simbabque