Frage

Ich bin mit der unten gezeigten Daten von unserem Server zu erhalten, wo gzip eingeschaltet wird. Muss mein Code bereits unterstützen gzip (vielleicht ist dies bereits getan von Android und nicht durch mein Java-Programm) oder muss ich hinzufügen / ändern smth.? Wie kann ich überprüfen, ob es gzip ist mit? Für meine opionion ist der Download ein bisschen langsam.

private static InputStream OpenHttpConnection(String urlString) throws IOException {
        InputStream in = null;
        int response = -1;

        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();

        if (!(conn instanceof HttpURLConnection))
          throw new IOException("Not an HTTP connection");

        try {
          HttpURLConnection httpConn = (HttpURLConnection) conn;
          httpConn.setAllowUserInteraction(false);
          httpConn.setInstanceFollowRedirects(true);
          httpConn.setRequestMethod("GET");
          httpConn.connect();

          response = httpConn.getResponseCode();
          if (response == HttpURLConnection.HTTP_OK) {
            in = httpConn.getInputStream();
            if(in == null)
              throw new IOException("No data");
          }
        } catch (Exception ex) {
          throw new IOException("Error connecting");
        }
        return in;
      }
War es hilfreich?

Lösung

Jeder moderne http lib Unterstützung gzip-Kompression, es ist Teil eines Standards für Jung und Alt.

Sie können aber müssen Header schicken: "Accept-Encoding: gzip"

Sie können überprüfen, ob es wirklich funktioniert mit Sniffer in Ihrem LAN oder auf dem Server. Sie können auch Response-Header überprüfen, aber das würde Codeänderungen erfordern (höchstwahrscheinlich, Sie werden auf gzip auf Ihrem Webserver drehen haben).

Außerdem können Sie 10Mb Datei von Räumen herunterladen. Mit gzip auf, es wäre waaaaay schneller: -)

Andere Tipps

Wenn Sie mit HttpURLConnection Klasse Arbeit mit HTTP-Protokoll „Accept-Encoding: gzip“ Feld wird auf ausgehende Anfragen automatisch hinzugefügt, und die entsprechende Reaktion behandelt. (Siehe Dokumentation )

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top