[Catalyst] $c->req->body oddity
Ian Docherty
catalyst at iandocherty.com
Sat Jan 26 17:16:51 GMT 2008
Jonathan Rockway wrote:
> * Ian Docherty <catalyst at iandocherty.com> 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 =3D HTTP::Request->new(POST =3D> 'http://linux:3000/svc/to/1=
001');
>> $request->content_type('text/text');
>> $request->content('THIS IS THE STRING');
>> my $response =3D $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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20080126/d4b79=
09e/attachment.htm
More information about the Catalyst
mailing list