Jonathan Rockway wrote:
* Ian Docherty <[EMAIL PROTECTED]> writes:
I am sending a POST to a Catalyst app and according to the documention
I expected the request body to
contain the data I sent. Instead it holds a filename in the tmp
directory which contains the document. Is
this an expected behaviour?
e.g. in my test script
my $request = HTTP::Request->new(POST => 'http://linux:3000/svc/to/1001');
$request->content_type('text/text');
$request->content('THIS IS THE STRING');
my $response = $ua->request($request);
Basically, HTTP::Body assumes you are sending your content as
application/octet-stream, since it's not multipart/form-data or
application/x-www-form-urlencoded (the two cases that it treats
specially).
Since file uploads are application/octet-stream, we put the data into
a file. Maybe it would be better to keep it in memory unless
Content-Length exceeds a certain length, but the current behavior is
consistent and reliable, so I don't see why we should change it. It's
really not that confusing.
Finally, the "string" that you see in $c->req->body is actually an
IO::File object, so you can easily suck the file in if the need
arises.
Regards,
Jonathan Rockway
____________
Thank you for that explanation. In the light of this does the following
seem reasonable.
I am creating a web service (xml over http) so the POST method would
present an xml
document to the controller using content-type text/xml and the
controller would read it
and parse it.
Regards
Ian
_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/