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

Reply via email to