Wie soll ich 'HttpServletRequest's aufzeichnen, die in' HttpServlet 'zur späteren Wiedergabe an' doPost 'gesendet werden?

8

Ich möchte einige Anfragen (vom Typ javax.servlet.http.HttpServletRequest ) in eine Datei ablegen und sie später aus der Datei wieder abspielen, so dass ich zukünftige Änderungen an der HttpServlet testen kann. Was ist der beste Weg, dies zu erreichen?

Bisher versuche ich, Daten aus dem mit der Anfrage verknüpften Eingabestrom zu ziehen und diese binären Daten in einer Datei zu speichern. Letztlich erfordert dies möglicherweise das Speichern einer Byte-Zählung vor jedem gespeicherten Eingabestream, sodass ich weiß, wo eine Anfrage endet und die andere beginnt.

Gibt es einen einfacheren Weg, dies zu tun?

** BEARBEITEN: Zur Klarstellung, dies sind keine Anfragen mit einem Browser. Bis jetzt löst keine der Antworten mein spezielles Problem, was vermutlich auf das Serialisieren und Deserialisieren eines HttpServletRequests zurückzuführen ist. Ich habe versucht, nur die Bytes aus dem Eingabestream ziehen, die von request.getInputStream () zurückgegeben werden. Leider, wenn ich dies in eine Zeichenfolge umwandele, scheint es, dass die resultierenden Bytes nicht von Message.Builder.mergeFrom (Bytes) analysiert werden können.

Ich bringe ein Kopfgeld für jeden, der weiß, wie ich mein Problem lösen kann.

    
jonderry 02.02.2011, 03:32
quelle

3 Antworten

1

In meinem speziellen Fall habe ich das Problem schließlich gelöst, indem ich CodedOutputStream verwendet habe, um com.google.protobuf.GeneratedMessage ( foo unten) zu schreiben:

%Vor%

Dies kann mit CodedInputStream mit etwas wie:

eingelesen werden %Vor%

Der CodedInputStream kann dann an einen Nachrichtengenerator übergeben werden, um die Deserialisierung abzuschließen.

    
jonderry 10.02.2011, 23:37
quelle
2

Vielleicht sollten Sie sich Selenium ( Ссылка ) ansehen.

Ich sage das, weil ich annehme, dass der Grund, warum Sie die Anfragen wiedergeben möchten, zu Testzwecken ist. Selenium zeichnet auf, was Sie in Ihrem Browser tun und kann es dann abspielen.

Wenn Sie versuchen, etwas anderes zu erreichen, könnten Sie vielleicht erklären, was Sie letztlich versuchen zu tun.

    
jhouse 02.02.2011 03:37
quelle
1

Es gibt viele lokale Reverse-Proxy-Tools, mit denen eine HTTP-Sitzung aufgezeichnet und wiedergegeben werden kann. In der Regel richten Sie Ihren Browser so ein, dass er einen lokalen Host-Proxy-Server verwendet, führen Sie die Aktionen aus, speichern Sie die Sitzung und wiederholen Sie die Wiedergabe. JMeter und Charles sind zwei Tools, die auf Java basieren.

Eine andere Option wäre, HttpClient zu verwenden, um Ihr Servlet programmatisch auszuprobieren. Die Verwendung von JUnit zum Ausführen der Tests hat den Vorteil, dass es einfacher ist zu überprüfen, ob Sie die richtige Antwort erhalten.

    
Uriah Carpenter 02.02.2011 03:47
quelle

Tags und Links