Возникли проблемы при настройке параметров для LWP :: UserAgent - PullRequest
1 голос
/ 29 июня 2011
my %parameters = (
                        key => 'value'
                 );
my $response = $ua->get('http://example.com/i', %parameters);

Я пытаюсь получить содержимое http://example.com/i?key=value, но после отладки я обнаружил, что %parameters хранятся в заголовках http вместо параметров url.

Что не так в моем коде?

Хотя perldoc говорит мне, что:

$ua->get( $url , $field_name => $value, ... )

Но это также должно работать, если я помещу эти параметры в %parameters, верно?

Ответы [ 2 ]

9 голосов
/ 29 июня 2011

Дополнительные параметры для get являются заголовками HTTP. Для запросов GET аргументы включаются в сам URL, закодированный URL. Вы можете использовать модуль URI для создания соответствующих URL-адресов, включая переменные GET, или создать их самостоятельно (возможно, с помощью URI :: Escape для urlencode значений).

например:

my %parameters = (
                        key => 'value'
                 );
my $url = URI->new("http://example.com/i");
$url->query_form(%parameters);
my $response = $ua->get($url);
2 голосов
/ 29 июня 2011

Из тонкой инструкции :

$ ua-> get ($ url)
$ ua-> get ($ url, $ field_name => $ value, ...)
Этот метод отправит GET-запрос на указанный $ url. Могут быть приведены дополнительные аргументы для инициализации заголовков запроса.

Акцент мой. Вы неправильно читаете документацию, дополнительные параметры для get() являются полями заголовка HTTP, а не параметрами CGI. Если вы хотите включить некоторые параметры CGI, вам придется добавить их в URI самостоятельно (желательно с URI ).

...