Как мне прочитать заголовки ответа + тело из одного POST, используя библиотеку scala dispatch - PullRequest
2 голосов
/ 27 сентября 2010

Я пытался использовать библиотеку 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 })

Как мне получить заголовки ответа И тело ответа за один раз, используя диспетчерскую библиотеку lib?Документы очень скудные, и я новичок в Scala.

TIA

Майкл

1 Ответ

2 голосов
/ 28 сентября 2010

Диспетчер использует обработчики для обработки HTTP-ответов на запрос. Он предоставляет несколько удобных ярлыков для выполнения рутинных задач, таких как те, которые вы указали в вопросе, такие как генерация InputStream, возврат содержимого в виде строки или просмотр заголовков ответа. Существует также метод >+, который объединяет два отдельных обработчика и выполняет их по одному и тому же запросу. Вот как вы можете решить вашу проблему, используя этот обработчик:

val ret = http(req >+ { r => (r as_str, r >:> { _("Content-Disposition") }) })

Возвращаемым значением является Tuple2, который содержит, в данном случае, строку, которая является содержимым веб-страницы, и другую строку, которая является значением заголовка Content-Disposition.

...