2012-03-28 7 views

Respuesta

20
request.body 

le da acceso a la solicitud cuerpo. Entonces, si es XML y lo quiere como un NodeSeq, haga:

XML.loadString(request.body) 
+0

+1, "la" respuesta – virtualeyes

+0

Asegúrese de que Content-Type no sea 'application/x-www-form-urlencoded' (vea la respuesta de Ross en https://groups.google.com/forum/#!topic/scalatra-user/lApjIJXiNqg) – uthomas

4

1, buena pregunta

Usted tiene acceso a la petición del servlet a través de palabras clave "petición" dentro de una ruta Scalatra, por lo getInputStream y getContentLength proporcionan acceso si el propio cuerpo de la entrada es la cadena XML; es decir, el cliente es no pasando xml almacenado en el campo nombrado como parte de una publicación de formulario. En este último caso, a continuación, el siguiente debe hacer el truco:

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

Si desea utilizar por encima de análisis sintáctico de la cadena, consulte Integración Anti-XML en el Scalatra Book

+0

soy nuevo en scala y hago esto ^^ estoy obteniendo el error de compilación en &&/contains. –

+0

@ gursahib.singh.sahni no estoy seguro, han pasado 5 años desde que utilicé Scalatra ;-) Tal vez pruebe su [canal Gitter] (https://gitter.im/scalatra/scalatra) – virtualeyes

Cuestiones relacionadas