Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl-Sensitive Sunglasses
 
PerlMonks  

LWP::UserAgent and Array of hashes

by DreamT (Pilgrim)
on Nov 13, 2012 at 12:54 UTC ( #1003603=perlquestion: print w/ replies, xml ) Need Help??
DreamT has asked for the wisdom of the Perl Monks concerning the following question:

Hi,
I have the following structure of an array:

push @params, {index_1 => "value1"}; push @params, {index_2 => "value2"};

i.e. an array of anonymous hashes. Can I post this array as POST parameters to LWP::UserAgent, or do I need to do something with it first?

Comment on LWP::UserAgent and Array of hashes
Download Code
Replies are listed 'Best First'.
Re: LWP::UserAgent and Array of hashes
by zentara (Archbishop) on Nov 13, 2012 at 14:46 UTC
    Here are a couple of scripts I use when playing with POSTs. They are from an ecommerce program that I used to learn Perl. I hope they help you understand what is being done in an actual POST.
    #!/usr/bin/perl use warnings; #use this to test cc transaction, it simulates the output of perlshop use warnings; use HTTP::Request::Common qw(POST); use LWP::UserAgent; $grand_total= '109.34'; $order_id= '999999999'; $street1= '9 9th Street'; $country= 'US'; $email= 'z9@z9.com'; $first= 'zjoe'; $last= 'zmon'; $card_no= '4111 1111 1111 1111'; $exp_mon= '09'; $exp_yr= '2004'; $zip= '48127'; $ua = LWP::UserAgent->new(); $req = POST 'http://zentara.zentara.net/~zentara/cgi-bin/store/respgen +.pl', ['IOC_merchant_id' => '1983645028456zz', 'IOC_order_total_amount' => "$grand_total", 'IOC_merchant_shopper_id' => 'susehost', 'IOC_merchant_order_id' => "$order_id", 'ecom_billto_postal_street_line1' => "$street1", 'ecom_billto_postal_postalcode' => "$zip", 'ecom_billto_postal_countrycode' => "$country", 'ecom_billto_online_email' => "$email", 'ecom_payment_card_name' => "$first $last", 'ecom_payment_card_number' => "$card_no", 'ecom_payment_card_expdate_month' => "$exp_mon", 'ecom_payment_card_expdate_year' => "$exp_yr", 'url' => 'http://zentara.zentara.net/~zentara/cgi-bin/shop/boacc.pl' +, ]; $content = $ua->request($req)->as_string; print $content;
    and if you want to setup a relay, you can manually construct the POST url string.
    #!/usr/bin/perl use warnings; use CGI; use LWP::UserAgent; my $test= 'TRUE'; #my test= 'FALSE'; my $relay; my $cgi = new CGI; my %input= $cgi->Vars(); open (TEST,"+>zrelayvars"); foreach $name (keys %input){ $value = $input{$name}; print TEST "$name=$value\n"; $relay .= "$name=$value&"; } $relay .= "Ecom_transaction_complete=$test&"; $relay .= "IOC_response_code=0&"; close TEST; my $ua = LWP::UserAgent->new(); my $req = HTTP::Request->new (POST => 'https://zentara.zentara.net/~ze +ntara/cgi-bin/shop/boacc.pl'); $req->content_type('application/x-www-form-urlencoded'); $req->content("$relay"); my $res = $ua->request($req); print $res->as_string;

    I'm not really a human, but I play one on earth.
    Old Perl Programmer Haiku ................... flash japh
Re: LWP::UserAgent and Array of hashes
by Anonymous Monk on Nov 13, 2012 at 13:49 UTC
    What happens when you try?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1003603]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (9)
As of 2015-07-29 09:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (263 votes), past polls