[Catalyst] $c->req->body oddity

Jennifer Ahn jenahn at stanford.edu
Sat Mar 8 01:34:41 GMT 2008



Ian Docherty wrote:
> 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 = 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: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/
>   
Hi Ian,

I would like to implement ajax as you described above. In you controller 
method, how do you get the XML post file to parse through it? I am 
trying to read from STDIN and then use LibXML to parse through the XML.  
Is this the right approach?

Thanks,
Jennifer



More information about the Catalyst mailing list