RE: HTTP request arguments/content
Hello Bill, Thanks for your response, but something still is wrong. When I try your code (I checked and as far as I can see I adapted mine to your example) I get this error message: Can't call method content on an undefined value at ./neopost_fetch_machinetype_new.pl line 98, FILEHANDLE line 1. FILEHANLDE is the file I get the value from... The code in the row that goes wrong is the following: return $res-content; I printed $res and got this result: HTTP::Response=HASH(0x858bb9c) I think I can't call content directly from the $res. What must change? Kind regards, Marijn -Original Message- From: Bill Luebkert [mailto:[EMAIL PROTECTED] Sent: maandag 29 januari 2007 22:55 To: Marijn Pessers Cc: Perl-Win32-Web@listserv.ActiveState.com Subject: Re: HTTP request arguments/content Marijn Pessers wrote: Hello, I have been trying to open a html page in perl. It works but I can't send the correct arguments (post values) with it to work. Try this one: use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common qw(POST); sub get_page_http ($;$); my $ua = LWP::UserAgent-new; my $remote = 'localhost'; # fix me my $path = '/somecgi.pl'; # fix me my $leverancier_nr = 'stuff'; my $FMnummer = 'more stuff'; my $datastring = 'what goes here?'; my ($hdr, $ct) = get_page_http ($ua, $remote, $path, $leverancier_nr, $FMnummer, $datastring); print \nhdrs:\n$hdr\nct:\n$ct\n; exit; sub get_page_http ($;$) { my $ua = shift; my $remote = shift || 'localhost'; my $path = shift || '/'; my $leverancier_nr = shift; my $FMnummer = shift; my $datastring = shift || ''; # raw datastring for ? # print get_page: http:$remote$path ('$datastring')\n; my $url = http://$remote$path;; my $req = POST $url, Content = [ 'submit_waarde' = '', 'page' = 'zks1', 'submit_waarde' = '', 'leverancier_nr' = $leverancier_nr, 'FMnummer' = $FMnummer ]; for (1 .. 2) { my $res = $ua-request($req); if ($res-is_error) { sleep 1;# wait a sec and try again next; } if (wantarray) { return ($res-headers_as_string, $res-content); } else { return $res-content; } } # failed return null string(s) if (wantarray) { return ('', ''); } else { return ''; } } __END__ __ NOD32 2017 (20070129) Information __ This message was checked by NOD32 antivirus system. http://www.eset.com ___ Perl-Win32-Web mailing list Perl-Win32-Web@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: HTTP request arguments/content
Marijn Pessers wrote: Hello Bill, Thanks for your response, but something still is wrong. When I try your code (I checked and as far as I can see I adapted mine to your example) I get this error message: Can't call method content on an undefined value at ./neopost_fetch_machinetype_new.pl line 98, FILEHANDLE line 1. That' s because the method request such as in my $res = $ua-request($req); failed in some way and therefor returned undef. You can't call a method on undef, which is what the message above is indicating. ___ Perl-Win32-Web mailing list Perl-Win32-Web@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
HTTP request arguments/content
Hello, I have been trying to open a html page in perl. It works but I can't send the correct arguments (post values) with it to work. Here is the code: [begin snippet] . my $browser = LWP::UserAgent-new; . sub get_page_http($;$){ my $browser = shift; my $remote = shift || 'localhost'; my $path= shift; my $leverancier_nr = shift; my $FMnummer = shift; my $datastring = shift || ''; raw datastring my $res; log_print get_page: $remote:$path ($datastring)\n; my $ua = LWP::UserAgent-new(); my $url = new URI::URL($remote.$path); some code to define the content length my $hdrs = new HTTP::Headers('Content-Length' = $content_length); my @arg = ('submit_waarde' = '', 'page' = 'zks1', 'submit_waarde' = '', 'leverancier_nr' = $leverancier_nr, 'FMnummer' = $FMnummer); my $retry=1; while($retry){ my $formpost= HTTP::Request-new('POST', $url, $hdrs, @arg); $res = $browser-request($formpost); if($res-is_error){ $retry++; if($retry2){ $retry=0; only try twice } } $retry=0; } if (wantarray){ #my($header,$html_body)=split /$BLANK/,$res-content,2; return ($res-headers,$res-content); }else{ return $res-content; } } [end snippet] The problem is that I can not get the post arguments correctly. I have been trying to put them in the header of using message in the HTTP::Message class. . my $mssg = HTTP::Message-new; . Can you tell me how to post the post values? Greetings, Marijn Pessers ___ Perl-Win32-Web mailing list Perl-Win32-Web@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: HTTP request arguments/content
Marijn Pessers wrote: Hello, I have been trying to open a html page in perl. It works but I can’t send the correct arguments (post values) with it to work. Try this one: use strict; use warnings; use LWP::UserAgent; use HTTP::Request::Common qw(POST); sub get_page_http ($;$); my $ua = LWP::UserAgent-new; my $remote = 'localhost'; # fix me my $path = '/somecgi.pl'; # fix me my $leverancier_nr = 'stuff'; my $FMnummer = 'more stuff'; my $datastring = 'what goes here?'; my ($hdr, $ct) = get_page_http ($ua, $remote, $path, $leverancier_nr, $FMnummer, $datastring); print \nhdrs:\n$hdr\nct:\n$ct\n; exit; sub get_page_http ($;$) { my $ua = shift; my $remote = shift || 'localhost'; my $path = shift || '/'; my $leverancier_nr = shift; my $FMnummer = shift; my $datastring = shift || ''; # raw datastring for ? # print get_page: http:$remote$path ('$datastring')\n; my $url = http://$remote$path;; my $req = POST $url, Content = [ 'submit_waarde' = '', 'page' = 'zks1', 'submit_waarde' = '', 'leverancier_nr' = $leverancier_nr, 'FMnummer' = $FMnummer ]; for (1 .. 2) { my $res = $ua-request($req); if ($res-is_error) { sleep 1;# wait a sec and try again next; } if (wantarray) { return ($res-headers_as_string, $res-content); } else { return $res-content; } } # failed return null string(s) if (wantarray) { return ('', ''); } else { return ''; } } __END__ ___ Perl-Win32-Web mailing list Perl-Win32-Web@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs