Sorry Alan,

I assumed too much - my fault not yours.

Generally, handling web services is done via dispatching. for
instance:

// Boot.scala
LiftRules.dispatch.prepend {
  case r @ Req("some" :: "path" :: Nil, "", PutRequest) => () =>
myHandlerFunction(r)
}

def myHandlerFunction(req: Req): Box[LiftResponse] = {
  println("Entity Body is:" + req.body.toString)
  ...
}

In this instance, you could pass the "r" property to the function and
then do r.body to get the entire entity body. Make sense?

If you wish to use lifts built in file uploading functions, you
catogically cannot use PUT at this present time, you can only use POST
with the accompanying content type set to multipart.

Does that clear things up at all?

Cheers, Tim


On Feb 16, 10:58 pm, Alan M <[email protected]> wrote:
> OK I think I follow up to a point.. so Lift needs to know that it's
> multipart to work correctly with a put, and it doesn't.  That much I
> get, seems like Put is just broken. What I don't understand is that
> last bit though..  When you say:> you can pass your entity body and just 
> access the
> > req.body property
>
> Where could you do that?  I don't build the requests myself, so would
> I have to modify the Lift code to do this?  Is there an extension
> point to make that happen?  (like set request builder here or
> something and a class I can extend)
>
> Alan
> On Feb 16, 2:25 pm, Tim Perrett <[email protected]> wrote:
>
> > Would it not be because of:
>
> > ServletFileUpload.isMultipartContent(request) // Req.scala line 79
>
> > If you then reference the commons lib, the source of that method looks
> > like:
>
> >     public static final boolean isMultipartContent(
> >             HttpServletRequest request) {
> >         if (!"post".equals(request.getMethod().toLowerCase())) {
> >             return false;
> >         }
> >         String contentType = request.getContentType();
> >         if (contentType == null) {
> >             return false;
> >         }
> >         if (contentType.toLowerCase().startsWith(MULTIPART)) {
> >             return true;
> >         }
> >         return false;
> >     }
>
> > As DPP says, it looks as though you will *need* to make it a POST
> > request, and also set the content type to multi-part.
>
> > Alternatively, if, like me, you dont want to use overloaded post as
> > its not very ROA, you can pass your entity body and just access the
> > req.body property... you wouldnt get any of the useful lift helpers,
> > but of course it depends on your use case :-)
>
> > Cheers
>
> > Tim
>
> > On Feb 16, 10:05 pm, David Pollak <[email protected]>
> > wrote:
>
> > > On Mon, Feb 16, 2009 at 1:53 PM, Alan M <[email protected]> wrote:
>
> > > > I'm still working away on my web service project (mentioned many
> > > > months ago when I first lobbied to get Scala used) and we rely heavily
> > > > on Put requests to create new resources.  My first attempt involving
> > > > Put and I've been stumped.
>
> > > > I've been able to run the server (using mvn/jetty) and my webapp gets
> > > > a PUT request (says so in the log produced by Jetty) and it does
> > > > everything it's supposed to in my code, except it never gets the put
> > > > file.  I used curl to make the call and it shows the bar saying it's
> > > > uploading the file and finishing.  In the server code, the Reqs body
> > > > is an Empty Box and it's uploadedFiles is an empty List.
>
> > > If you do a POST with the same data, does it work correctly (uploadedFiles
> > > gets populated)?
>
> > > > So my question is, where do I get that data from?  or is there
> > > > something else I need to do to turn that feature on? (enable file
> > > > upload or something?)
>
> > > > Alan
>
> > > > P.S. Something that might be relevant, since it's a webservice I'm
> > > > using the stateless dispatcher.. does that effect how/when the
> > > > paramCalculator works and therefore messes this up somehow?
>
> > > --
> > > Lift, the simply functional web frameworkhttp://liftweb.net
> > > Beginning Scalahttp://www.apress.com/book/view/1430219890
> > > Follow me:http://twitter.com/dpp
> > > Git some:http://github.com/dpp
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to