Как мне прочитать заголовки ответа + тело из одного 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.

Другие вопросы по тегам