I've been working to find a solution to adding Post data to a sub
request for a few days now (since last week when I posted about
retrieving the POST data in the first place).
Adding the POST data to the $subr object using write doesn't work,
because it tries to add it to the output response and not the input request.
I then found a message on google that indicated that you could modify
the incoming request POST data via a filter, so I've written something
similar to the following:
------------------------------------------
use Apache2::SubRequest ();
use Apache2::ServerUtil ();
use Apache2::RequestUtil ();
use Apache2::RequestRec ();
use Apache2::RequestIO ();
use Apache2::Filter ();
use Apache2::Log ();
use APR::Table ();
use APR::Brigade ();
use APR::Bucket ();
sub handler {
my $r = shift;
our @ProxyInputContent = ();
sub proxy_input_filter {
my ( $f, $bb ) = @_;
my $ba = $bb->bucket_alloc();
my $newBucket = '';
# remove the existing buckets
$bb->cleanup;
# create buckets using the orig request POST data
foreach ( @ProxyInputContent ) {
# the current array element will be represented as $_
# create a new bucket
$newBucket = APR::Bucket->new($ba, $_);
# put the new bucket in the subr brigade
$bb->insert_head($newBucket);
}
# the subrequest should now contain the post data
return Apache2::Const::OK;
}
# handle POST requests
if ( $r->method() eq "POST" ) {
# set the subrequest method to also be a post
$subr->method('POST');
# create a post data buffer
my $PostBuffer = '';
# loop over each line of data
while($r->read($PostBuffer, 1024)) {
# add the content to the ProxyInputContent Array
push(@ProxyInputContent, $PostBuffer);
}
# make the subrequest go through the input filter so we can add the
post data to it.
$subr->add_input_filter( \&proxy_input_filter );
}
# perform the proxy request
$subr->run;
------------------------------------------
However, this doesn't work. I still don't see the POST data on the
Tomcat side.
And, being the noob I am, I haven't yet figured out how to log the data
from the filter to I can make sure I'm doing it right.
So, my questions are simple:
1) Is there an ideal way to add POST data to a subrequest that I'm
missing here?
2) Is it possible to log data from a filter so I can debug it?
Thank you *so much* for your help and patience with this. I truly
appreciate your time.
--
Warm Regards,
Jordan Michaels