Ich versuche, eine byte[]
in Java zu analysieren, die eine Darstellung einer HTTP-Antwort ist. Es gibt diese Frage Is there any simple http response parser for Java?, die genau meine Frage ist, aber die akzeptierte Antwort hilft mir nicht. Wenn ich mir http://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/io/HttpMessageParser.html anschaue, verstehe ich nicht, wie mir das weiterhilft. dieserparse HTTP Antwort Bytes in Java
Antwort
Ich hoffe, das sollten Sie
String s = "HTTP/1.1 200 OK\r\n" +
"Content-Length: 100\r\n" +
"Content-Type: text/plain\r\n" +
"Server: some-server\r\n" +
"\r\n";
SessionInputBufferImpl sessionInputBuffer = new SessionInputBufferImpl(new HttpTransportMetricsImpl(), 2048);
sessionInputBuffer.bind(new ByteArrayInputStream(s.getBytes(Consts.ASCII)));
DefaultHttpResponseParser responseParser = new DefaultHttpResponseParser(sessionInputBuffer);
HttpResponse response = responseParser.parse();
System.out.println(response);
Dieser Code erzeugt die folgende Ausgabe erhalten begonnen:
HTTP/1.1 200 OK [Content-Length: 100, Content-Type: text/plain, Server: some-server]
Danke! Das bringt mich in Schwung. – Gijs
Check out: https://github.com/ipinyol/proxy-base
Dies ist ein einfacher in hohem Maße konfigurierbar HTTP-Proxy. Die Methode readHeader der Klasse org.mars.proxybase.ProxyThread analysiert die HTTP-Header bei einem DataInputStream (der bytes liest) und gibt ein Objekt vom Typ Header mit Informationen zum Header zurück.
Wahrscheinlich wissen Sie auch, dass Sie entweder eine Inhaltslängendefinition in der Kopfzeile haben oder Daten chunked haben, die Sie in der http-Antwort nach Blöcken lesen müssen. Die Methoden readContent und readContentByChunk der gleichen Klasse führen das Lesen des Inhalts durch. Sie können den Code selbst erkunden und entsprechend modifizieren.
Danke.Ich hoffe, es gibt einen weniger arbeitsintensiven Weg, aber ich könnte versuchen, dies zu tun, wenn es sonst nichts gibt. – Gijs
- 1. C# -Client Java-Server HTTP keine Antwort
- 2. Android Parse Json Antwort auf Java ArrayList
- 3. Größe der HTTP-Antwort in Java abrufen
- 4. parse $ .post Antwort in jquery
- 5. Wie HTTP-Header aus CURL-Antwort in Java entfernen
- 6. Wie RestTemplate Parse Antwort
- 7. Parse whois Antwort
- 8. JSON Array & Parse Antwort
- 9. Java: Empfangen einer mehrteiligen HTTP-Antwort
- 10. Parse SOAP-Antwort und extrahieren spezifischen Knoten mit JAVA
- 11. Einfache HTTP Antwort erhalten
- 12. Parse Raw HTTP in Python
- 13. Parse JSON Antwort REST android
- 14. Parse Xml von httppost Antwort
- 15. Parse Raw HTTP Headers
- 16. Titan Mobile Parse JSK Antwort
- 17. Parse Daten von JSON-Antwort
- 18. Header-Bearbeitungsproblem mit HP Fortify in HTTP-Antwort [Java]
- 19. Parsing HTTP-Antwort in Python
- 20. HTTP-Antwort in Node-rot
- 21. HTTP/1.1-Antwort auf mehrere Bereiche
- 22. WiX - HTTP Antwort Header
- 23. Spring MessageConverter HTTP 415 Antwort?
- 24. AngularJS $ http Antwort Header
- 25. kann nicht $ http Antwort
- 26. http-Antwort-Header-Informationen
- 27. Angular2 Handhabung http Antwort
- 28. Wie HTTP-Antwort in Firefox-Erweiterung
- 29. Java http Post: Unterschied beim Lesen von Bytes durch curl und in Java
- 30. Dekomprimieren einer http-Response Antwort
Welche Mechanismus bietet Ihnen mit diesem Byte-Array? Welche Methode verwenden Sie, um tatsächlich mit dem HTTP-Server zu kommunizieren? – user3062946
Die Daten stammen von WARC-Dateien, die mit einem Webcrawler gesammelt wurden. Ich weiß, dass es eine Bibliothek gibt, die die gesamte WARC-Datei analysiert, aber ich verwende sie mit diesem Hadoop-Mapper https://github.com/ept/warc-hadoop, der sein eigenes WARCRecord-Format verwendet. Es gibt mehrere Routen, aber ich denke, das Parsen einer HTTP-Antwort sollte machbar sein. – Gijs
Die verknüpften Dokumente sagen: "Diese Bibliothek führt derzeit kein Parsing der Daten innerhalb von Datensätzen aus, z. B. die HTTP-Header oder den HTML-Text. Sie können die Antwort des Servers einfach als Array von Bytes lesen hinzugefügt in zukünftigen Versionen. " - Bedeutet das, dass das Byte-Array nur verwendet werden kann, um einen String zu erstellen, der die textliche HTTP-Antwort anzeigt? – user3062946