[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