Ich verwende den RSS-Feed von kat.cr für ein persönliches Projekt. Ich habe versucht, den Feed mit dem Rom-Framework zu lesen, und habe ein erhebliches Problem festgestellt.Spezifische XML-Daten verstümmelt
Alle anderen Feeds, die ich versuchte, Rom zu verwenden (und andere, grundlegendere Möglichkeiten, den Feed zu lesen), funktionierten einwandfrei, aber der folgende Feed warf weiterhin Zeichencodierungs-bezogene Ausnahmen auf.
https://kat.cr/usearch/Arrow%20S04E21/?field=seeders&sorder=desc&rss=1
Ich habe dann die folgende Methode, um zu sehen, welche Daten empfangen sah aus wie:
public static void saveXML(String url) throws IOException {
Client client = ClientBuilder.newClient();
Response r = client.target(url).request(MediaType.TEXT_PLAIN_TYPE).get();
PrintWriter out = new PrintWriter("XML.txt");
String sXML = r.readEntity(String.class);
out.print(sXML);
out.close();
}
Die oben genannten Feed Ergebnisse in verstümmelte Daten während alle anderen Feeds perfekt erscheinen. Warum zeigt es sich perfekt in jedem Browser, selbst wenn der Zeichensatz auf UTF-8 gezwungen wird?
Ich habe die 'XML.txt' Datei in Hexplorer betrachtet und festgestellt, UTF-8 Codierung Byte-Sequenzen in der gesamten Datei.
Ich bin gründlich verloren, jede Hilfe wäre sehr geschätzt.
Das war genau das. Vielen Dank für Ihre Hilfe. Wenn es dir nichts ausmacht, frage ich, wie genau hast du festgestellt, dass es mit gzip komprimiert wurde? Haben Sie es anhand der Bytefolge identifiziert, die Sie in Ihrer Antwort angegeben haben? –
@fakeskuH Nun, ich ging zu der URL in meinem Browser und es hat gut funktioniert, so dass ich denke, dass es etwas in Ihrem Code (oder die Rom-Bibliothek), die es nicht richtig behandelt. Beim Betrachten der HTTP-Header von dieser Website sah ich, dass es den Header '" content-encoding: gzip "' hatte. Ich habe einfach einen 'GZIPInputStream' um eine Testanfrage/Antwort geworfen und es hat funktioniert! –
Ich wusste, dass ich etwas verpasst habe. Danke noch einmal! –