2 Stimmen

Wie kann ich die maximale Downloadgröße angeben?

Abgesehen von der maximalen Umleitungen, und wie kann die maximale Downloadgröße einer URL für einen Httpclient angegeben werden?

2voto

Raffaele Punkte 20367

AFAIK gibt es keinen HTTP-Header, der dem Server die maximale Antwortgröße mitteilt. Sie können die Content-Length der Antwort und kehrt sofort zurück, wenn sie zu groß ist. Wenn sie nicht angegeben ist (sie kann sogar auf der Serverseite unbekannt sein), haben Sie nur die Möglichkeit, das Herunterladen zu starten. Keine Sorge: Wenn Sie HttpClient.execute().getEntity() den Inhalt wird nirgendwo vollständig heruntergeladen . Eine HttpEntity kann gestreamt und gepuffert werden, was bedeutet, dass es nicht vollständig im Speicher gehalten oder auf der Festplatte gespeichert wird, sobald Sie die execute()

Sie können die Quellen selbst erkunden

1voto

Wenn Sie nicht Content-Length Sie müssen die Ressource als Stream herunterladen und selbst verfolgen, wie viele Bytes Sie heruntergeladen haben. So funktioniert HTTP nun einmal.

1voto

Raj Punkte 3021

So habe ich das Problem gelöst, wie in Jarrods Antwort beschrieben:

HttpGet request = new HttpGet();
request.setURI(new URI(url));
response = client.execute(request);
BufferedReader in;

in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";

char buffer[] = new char[1024];

int totalReadSize = 0, currentRead=0;
while ((currentRead = in.read(buffer,0,buffer.length)) != -1)
{
    totalReadSize += currentRead;
    line = new String(buffer);
    sb.append(line);
    if (totalReadSize > MAX_DOWNLOAD_SIZE)
    {
        client.getConnectionManager().shutdown();
        throw new Exception("File too large");
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X