ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
20.2. Automating Form SubmissionProblemYou want to submit form values to a CGI script from your program. SolutionIf you're submitting form values using the GET method, create a URL and encode the form using the use LWP::Simple; use URI::URL; my $url = url('http://www.perl.com/cgi-bin/cpan_mod'); $url->query_form(module => 'DB_File', readme => 1); $content = get($url); If you're using the POST method, create your own user agent and encode the content appropriately: use HTTP::Request::Common qw(POST); use LWP::UserAgent; $ua = LWP::UserAgent->new(); my $req = POST 'http://www.perl.com/cgi-bin/cpan_mod', [ module => 'DB_File', readme => 1 ]; $content = $ua->request($req)->as_string; DiscussionFor simple operations, the procedural interface of the LWP::Simple module is sufficient. For fancier ones, the LWP::UserAgent module provides a virtual browser object, which you manipulate using method calls. The format of a query string is: field1=value1&field2=value2&field3=value3 In GET requests, this is encoded in the URL being requested: http://www.site.com/path/to/ script.cgi?field1=value1&field2=value2&field3=value3 Fields must still be properly escaped, so setting the http://www.site.com/path/to/ script.cgi?arg=%22this+isn%27t+%3CEASY%3E+%26+%3CFUN%3E%22 The We can use the LWP::Simple module to submit data in a GET request, but there is no corresponding LWP::Simple interface for POST requests. Instead, the HTTP::Request::Common module's POST function conveniently creates a properly formatted request with everything properly escaped. If you need to go through a proxy, construct your user agent and tell it to use a proxy this way: $ua->proxy(['http', 'ftp'] => 'http://proxy.myorg.com:8081'); That says that both HTTP and FTP requests through this user agent should be routed through the proxy on port 8081 at proxy.myorg.com. See AlsoThe documentation for the CPAN modules LWP::Simple, LWP::UserAgent, HTTP::Request::Common, URI::Escape, and URI::URL; Recipe 20.1 |