In order to trigger XML parsing, you have to set the Content-Type to text/xml
On Fri, Oct 23, 2009 at 10:30 AM, GA <my_li...@me.com> wrote: > > I have printed Req in the log and it looks like the XML is really empty: > > Req(List(), Map(), ParsePath(List(api, person),,true,false), , > PutRequest, Empty) > > This is how I send the XML: > > def post(url:URL):String = { > > val message = > <person> > <userName>John</userName> > <firstName>John</firstName> > <lastName>Smith</lastName> > <password>aaaaa</password> > <email>a...@aaaa.com</email> > <createdon>10/12/2009</createdon> > <createdby>John</createdby> > <updatedon>10/12/2009</updatedon> > <updatedby>John</updatedby> > </person> > > url.openConnection match { case conn: HttpURLConnection => { > conn.setRequestMethod("PUT") > conn.setDoOutput(true) > //conn.connect > conn.getOutputStream.write > (message.mkString.getBytes) > scala.io.Source.fromInputStream > (conn.getInputStream).getLines.mkString > } > } > } > > Any suggestions? > > Cheers, > > GA > > > > > On Oct 23, 2009, at 5:15 PM, GA wrote: > > > > > Hello guys, > > > > I have created an API to process a PUT request and a GET request. The > > GET works perfectly fine, but with the PUT the XML seems to be lost in > > its way. I have the following code: > > > > def dispatch: LiftRules.DispatchPF = { > > case Req("api" :: "person" :: userName :: Nil, "", > > GetRequest) => > > () => showPerson(userName) > > > > case r @ Req(List("api", "person"), "", PutRequest) => > > () => addPerson(r) > > } > > > > In the addPerson method I have the following code: > > > > req.xml match { > > case Full(<person>{parameters @_*}</person>) => { > > for(parameter <- parameters){ parameter match { > > > > All the XML parsing.... > > > > } > > } > > > > try { > > person.validate match { > > case Nil => > > person.save > > CreatedResponse(wrapXmlBody > > (<operation id="addPerson" success="true"></operation>), "text/xml") > > case _ => > > CreatedResponse(wrapXmlBody > > (<operation id="addPerson" success="false"></operation>), "text/xml") > > } > > } > > catch { > > case e => Log.error("Could not add person", > > e); BadResponse() > > } > > } > > case _ => Log.error("Request was malformed "+req.view); > > BadResponse() > > } > > > > The method always goes through the last case: "Request was malformed". > > > > I was checking the values to req.view and req.xml.toString and the > > results are "person" and empty, respectively. > > > > Any ideas about what it could be happening? > > > > Thanks in advance, > > > > GA > > > > > > > > > > > > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@googlegroups.com To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---