Don't slurp twice. Slurp mutates the stream by reading bytes off of it.
Also, slurping an xml stream isn't a good idea, because the xml header can change the character encoding like so
<?xml version="1.0" encoding="ISO-8859-1"?>
Try
(let [bufstream (doto (java.io.ByteArrayOutputStream. content-length)
buffer (.toByteArray bufstream)]
(parse-1 (java.io.ByteArrayInputStream. buffer))
(parse-2 (java.io.ByteArrayInputStream. buffer)))
This way, your parse functions that take an input stream work unchanged.
Be aware, that this allocates memory in the size of the body.