Domanda

I have a scalatra servlet:

post("/asdf") {
  ???
}

And my clients send xml in post body, so I need to extract raw text from request. How do I do it in scalatra?

È stato utile?

Soluzione

request.body

gives you access to the request body. So if it is XML and you want it as a NodeSeq, do:

XML.loadString(request.body)

Altri suggerimenti

+1, good question

You have access to Servlet Request via "request" keyword within a Scalatra route, so getInputStream and getContentLength provide access if the post body itself is the xml string; i.e. client is not passing xml stored in named field as part of a form post. If the latter, then the below should do the trick:

post("/foo" && request.getHeader("Accept-Encoding") contains "application/xml") {
  val xml = XML.fromString(params("xml-param-field-name"))
}

If you want to use above parse from string, see Anti-XML Integration in the Scalatra Book

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top