CGI.pmでtext/xmlなPOSTデータを読みたい場合
CGI.pmでtext/xmlなPOSTデータを読みたい場合、
my $q = CGI->new;
$q->param('POSTDATA')
で読める。いままで知りませんでした。
正確には、x-www-form-urlencoded や
multipart/form-dataではない場合に、POSTデータはPOSTDATAで読み出せる。ソースでは、
# YL: Begin Change for XML handler 10/19/2001
if ($meth eq 'POST'
&& defined($ENV{'CONTENT_TYPE'})
&& $ENV{'CONTENT_TYPE'} !~ m|^application/x-www-form-urlencoded|
&& $ENV{'CONTENT_TYPE'} !~ m|^multipart/form-data| ) {
my($param) = 'POSTDATA' ;
$self->add_parameter($param) ;
push (@{$self->{$param}},$query_string);
undef $query_string ;
}
# YL: End Change for XML handler 10/19/2001
このようになっている。CGI.pmのcgi_docs.htmlにも書いてありました。
これを使うとAjaxやFlashのXMLリクエストの取得がスムーズだし、Web
APIがCGI.pmを使っていても書けそうだ。