Ein bisschen verwirrt über HttpClient[Java] Umgang mit gzip Antworten

Meine Anwendung eine http-Anforderung, um einige api-service, der Dienst gibt eine Gzip-Reaktion. Wie kann ich sicher stellen, dass die Antwort ist ja, in gzip-format? Ich bin verwirrt, warum nach der Anfrage hatte ich nicht, um Sie zu entpacken.

Unten ist mein code:

public static String streamToString(InputStream stream) {
    BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
    StringBuilder sb = new StringBuilder();
    String line;

    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
    } catch (IOException e) {
        logger.error("Error while streaming to string: {}", e);
    } finally {
        try { stream.close(); } catch (IOException e) { }
    }

    return sb.toString();
}

public static String getResultFromHttpRequest(String url) throws IOException { //add retries, catch all exceptions
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpGet;
    HttpResponse httpResponse;
    InputStream stream;

    try {
        httpGet = new HttpGet(url);
        httpGet.setHeader("Content-Encoding", "gzip, deflate");
        httpResponse = httpclient.execute(httpGet);
        logger.info(httpResponse.getEntity().getContentEncoding());
        logger.info(httpResponse.getEntity().getContent());
        if (httpResponse.getStatusLine().getStatusCode() == 200) {
            stream = httpResponse.getEntity().getContent();
            return streamToString(stream);
        }
    } catch (IllegalStateException e) {
        logger.error("Error while trying to access: " + url, e);
    }

    return "";
}

Vielleicht ist es das Dekomprimieren automatisch, aber ich würde gerne sehen, einige Hinweise darauf, dass zumindest.

mögliche Duplikate von Apache-Commons-HttpClient-support GZIP?
irgendwie aber nicht genau.
Wenn die Umgebung ermöglicht es Ihnen, dies zu tun, sehr schnell zu prüfen, hätte die Erfassung der Zugriffe (Wireshark, Tcpdump...) zwischen der app und dem server. HTTP ist ein textbasiertes Protokoll, wenn die Antwort hat das Recht, header und body besteht hauptsächlich aus nicht-lesbaren Zeichen, es sieht aus wie die Resonanz komprimiert wird.

InformationsquelleAutor iCodeLikeImDrunk | 2014-01-31

Schreibe einen Kommentar