in reply to Re^3: A regexp from paypal
in thread A regexp from paypal

This is what I have so far
#!/usr/bin/perl use strict; use CGI; use CGI::Carp qw(fatalsToBrowser); my $q = new CGI; $q->param(-name=>'cmd',-value=>'_notify-validate'); # read post from PayPal system and add 'cmd' #read (STDIN, my $query, $ENV{'CONTENT_LENGTH'}); #$query .= '&cmd=_notify-validate'; # post back to PayPal system to validate use LWP::UserAgent; my ($ua,$req,$res); $ua = new LWP::UserAgent; $req = new HTTP::Request 'POST','http://www.eliteweaver.co.uk/testing/ +ipntest.php'; $req->content_type('application/x-www-form-urlencoded'); $req->content($q); $res = $ua->request($req);
I need to add the cmd = _notify-validate name, value pair to the post string and then send it back out using LWP. When I send it out I am sending the CGI object itself out. ---- Now, here is some code that seems to do the trick well but I want to use the CGI module to do this (if possible) This is not my code, it is paypal's
# read post from PayPal system and add 'cmd' read (STDIN, $query, $ENV{'CONTENT_LENGTH'}); $query .= '&cmd=_notify-validate'; # post back to PayPal system to validate use LWP::UserAgent; $ua = new LWP::UserAgent; $req = new HTTP::Request 'POST','http://www.paypal.com/cgi-bin/webscr' +; $req->content_type('application/x-www-form-urlencoded'); $req->content($query); $res = $ua->request($req);

Replies are listed 'Best First'.
Re^5: A regexp from paypal
by Cubes (Pilgrim) on Nov 25, 2007 at 23:42 UTC
    Unless I'm way off base, you should be able to set the param you need using CGI, after which it will be part of the object you send in your request.
      I have set the param before using $q->param(-name=>,-value=>) and then sending the object off in my LWP request. This doesn't work and I'm guessing it is because it is simple a perl hash and would show up in the content of the request as HASH(x010101) or whatever, not as a POST request with the name=value pairs. Is that correct?
        Take a look at HTTP::Request::Common.

        When you create your HTTP::Request object, instead of:
        $req = new HTTP::Request 'POST','http://www.eliteweaver.co.uk/testing/ipntest.php';

        Put your parameter hash in as the third argument (after you've added your new param):
        $req = new HTTP::Request 'POST','http://www.eliteweaver.co.uk/testing/ipntest.php',$q->Vars;

        You can then delete the next two lines,

        $req->content_type('application/x-www-form-urlencoded'); $req->content($q);
        as the content is set in the constructor, and the correct content_type is set by default.