Holger Porath wrote:
Hi all,
I am trying to use perl mapscript for a WFS and it works for get
requests. For post requests I get the following error message:
POST body is short
I am setting the parameters by calling the method loadParams(). Do I
have to use msIO_installStdinFromBuffer(). And if so, how do I send the
parameters to the buffer?
Thanks in advance.
Cheers
Holger Porath
Sorry for posting this twice, the prvious post was on the wrong mailing
list.
-------------------------------------------
Dipl. Wirt. Inform. Holger Porath
Wangeroogestraße 63
45665 Recklinghausen
Are you using cgi or fastcgi or mod_perl?
what version of mapserver (cuz < 5.6 needs patches)
I have mod_perl code, doing wms, with mapserver 5.6beta3. Here is some of my
code:
With taint mode enabled, you need to untaint before calling setParameter:
$owreq = new mapscript::OWSRequest();
my @par = $web->paramNames();
for my $x (@par)
{
# taint mode is fickle...
my $xx = undef;
my $vv = undef;
if ($x =~ /([\w_]+)/)
{
$xx = $1;
} else {
next;
}
my $v = $web->param($x);
if ($v =~ /([\w,.:\/]+)/)
{
$vv = $1;
} else {
$vv = '';
}
$owreq->setParameter($xx, $vv);
}
then later on, to process the request, I do:
mapscript::msIO_installStdoutToBuffer();
$x = $map->OWSDispatch( $owreq );
if ($x)
{
my $errObj = new mapscript::errorObj();
while ($errObj) {
print STDERR "ERROR:
$errObj->{code}:$errObj->{message}:$errObj->{routine}\n
";
$errObj = $errObj->next();
}
}
my $content_type = mapscript::msIO_stripStdoutBufferContentType();
$x = mapscript::msIO_getStdoutBufferBytes();
$web->content_type($content_type);
if (mapscript::msGetVersionInt() >= 50500)
{
print $$x;
} else {
print $x;
}
mapscript::msIO_resetHandlers();
With mapserver less than 5.6, you really need the patches for perl, otherwise
this:
$x = mapscript::msIO_getStdoutBufferBytes();
returns unusable stuff.
-Andy
_______________________________________________
mapserver-users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/mapserver-users