Как мне прочитать заголовки ответа + тело из одного POST, используя библиотеку scala dispatch
Я пытался использовать диспетчерскую библиотеку для загрузки файла через запрос HTTP POST. Сервер возвращает заголовок "content-disposition", предлагающий имя файла для файла данных, который он возвращает.
Мне удалось прочитать все тело ответа в виде строки,
http(r >~ { (x) => println(x.getLines.mkString("","\n","")) })
чтение заголовков ответа самостоятельно
http(r >:> { (x) => println(x) })
и получение BufferedReader для тела ответа
http(r >> { (x,c) => (new BufferedReader(new InputStreamReader(x,c))).readLine })
Как мне получить заголовки ответа И тело ответа за один раз, используя диспетчерскую библиотеку? Документы очень скудные, и я новичок в Scala.
ТИА
Майкл
1 ответ
Диспетчер использует обработчики для обработки HTTP-ответов на запрос. Он предоставляет несколько удобных ярлыков для выполнения рутинных задач, таких как те, которые вы указали в вопросе, такие как генерация InputStream, возврат содержимого в виде строки или просмотр заголовков ответа. Есть также метод, >+
, который состоит из двух отдельных обработчиков и выполняет их по одному и тому же запросу. Вот как вы можете решить вашу проблему, используя этот обработчик:
val ret = http(req >+ { r => (r as_str, r >:> { _("Content-Disposition") }) })
Возвращаемое значение представляет собой Tuple2, который содержит, в данном случае, строку, которая является содержимым веб-страницы, и другую строку, которая является значением заголовка Content-Disposition.