[Lift] Re: Problem to process a PUT request in a lift API

2009-10-24 Thread GA
Thanks David. You were right. I added this line:

conn.addRequestProperty(content-type, text/xml)

and it works perfectly.

Thanks again.

GA



On Oct 23, 2009, at 7:36 PM, David Pollak wrote:

 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
 userNameJohn/userName
 firstNameJohn/firstName
 lastNameSmith/lastName
 passworda/password
 emaila...@.com/email
 createdon10/12/2009/createdon
 createdbyJohn/createdby
 updatedon10/12/2009/updatedon
 updatedbyJohn/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
-~--~~~~--~~--~--~---



[Lift] Re: Problem to process a PUT request in a lift API

2009-10-23 Thread GA

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
 userNameJohn/userName
 firstNameJohn/firstName
 lastNameSmith/lastName
 passworda/password
 emaila...@.com/email
 createdon10/12/2009/createdon
 createdbyJohn/createdby
 updatedon10/12/2009/updatedon
 updatedbyJohn/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


 


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: Problem to process a PUT request in a lift API

2009-10-23 Thread David Pollak
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
 userNameJohn/userName
 firstNameJohn/firstName
 lastNameSmith/lastName
 passworda/password
 emaila...@.com/email
 createdon10/12/2009/createdon
 createdbyJohn/createdby
 updatedon10/12/2009/updatedon
 updatedbyJohn/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
-~--~~~~--~~--~--~---