#scala #akka #akka-http
#scala #akka #akka-http
Вопрос:
Я использую Akka и хочу изменить сущность a HttpResponse
. В частности, я хочу изменить body
или header
конкретного HttpResponse
. Поскольку HttpResponse
это конечный класс, я не могу его изменить, но достаточно скопировать и установить слегка измененный body
.
Вот мой код:
val handler = Source.single(context.request)
.via(flow)
.runWith(Sink.head)
.flatMap { r =>
logger.info(s"Status code: ${r.status}.")
val copyR = r.copy(status = r.status, headers = r.headers, entity = ???, protocol = r.protocol)
context.complete(copyR)
}
Есть ли элегантный способ проанализировать entity
и изменить определенные элементы DOM?
Комментарии:
1. Что вы подразумеваете под DOM?
HttpResponse
это просто поток байтов.2. Например, я хотел бы добавить или удалить ссылки
HttpResponse
.3. Длинная история, но, короче говоря, вам нужно отменить ответ на что-то, что понимает HTML / XML, изменить его, а затем маршалировать обратно в двоичный файл. Взгляните на doc.akka.io/docs/akka/2.4.11/scala/http/common/marshalling.html Для синтаксического анализа HTML я рекомендую JSoup. Akka-Http не предоставляет функциональности для анализа HTML.
4. Круто! Спасибо за вашу помощь!