Erhalte den gesamten HttpResponse-Body als String mit Akka-Streams HTTP

8

Ich versuche zu verstehen, wie man die neue akka.http -Bibliothek benutzt. Ich möchte eine HTTP-Anfrage an einen Server senden und den gesamten Antworttext als einen einzelnen String lesen, um ein Source[String,?] zu erzeugen.

Hier ist die beste Lösung, die ich bisher produzieren konnte:

%Vor%

Es scheint gut zu funktionieren (außer dem fehlenden Fehlerpfad), aber es ist ein bisschen klobig für solche einfachen Aufgaben. Gibt es eine intelligentere Lösung? Kann ich die grouped / mkString vermeiden?

    
paradigmatic 21.07.2015, 07:29
quelle

2 Antworten

11

Sie können die toStrict-Methode von verwenden HttpResponse mit Zeitüberschreitung. Es sammelt die ganze Antwort als Zukunft.

  

def toStrict (Zeitüberschreitung: FiniteDuration) (impliziter ec: ExecutionContext, fm: Materializer): Future [Strict] Gibt eine gemeinsam nutzbare und serialisierbare

-Funktion zurück      

Kopie dieser Nachricht mit einer strikten Entität.

Beispiel:

%Vor%     
Zernike 21.07.2015 07:52
quelle
7

Sie können Unmarshall verwenden, was auch bei anderen Typen funktioniert, z. Json von Spray-Json. Dies auch als strict gibt Future[_] zurück.

Beispiel:

%Vor%     
almendar 21.08.2015 22:15
quelle

Tags und Links