getContentLengthLong() == -1 do të thotë se nuk ka gjatësi të njohur të përmbajtjes në metadat e disponueshme. Vazhdo leximin e rrjedhës dhe shfaq bajtët e marrë ose progres të pacaktuar; mos e trajto si përgjigje bosh dhe mos aloko një bufer me madhësi negative.

long expected = connection.getContentLengthLong();
long received = 0;
byte[] buffer = new byte[8192];
try (InputStream input = connection.getInputStream()) {
    int count;
    while ((count = input.read(buffer)) != -1) {
        output.write(buffer, 0, count);
        received += count;
    }
}

Lidhja është konfiguruar tashmë dhe output zotërohet nga thirrësi. Mbaj afatet e lidhjes dhe leximit si dhe çdo kufi madhësie të aplikacionit rreth këtij cikli. Një gabim I/O është shkarkim i dështuar, jo përfundim i suksesshëm me më pak bajtë.

Krahaso gjatësitë në të njëjtin shtresë. Kodimi chunked i HTTP/1.1 mund të zëvendësojë Content-Length dhe dekodohet nga implementimi HTTP. Një proxy mund ta rikornizojë. Dekompresimi gjithashtu mund ta bëjë numrin e bajtëve të dekoduar të aplikacionit të ndryshëm nga një Content-Length i koduar.

Nëse shfaqen njëkohësisht Transfer-Encoding dhe Content-Length, mos zgjidh një numër të përshtatshëm: kornizimi HTTP i jep përparësi kodimit të transferimit dhe e trajton kombinimin si gabim të mundshëm. Lëre atë analizë një implementimi konform.

Një URL FTP përmes një portali HTTP kërkon verifikimin e sjelljes konkrete të URLConnection; nuk garanton që çdo aksesues i kokës HTTP sillet si në një URL HTTP të zakonshme në çdo JDK. Përdor API-n e gjatësisë me vlerë të gjatë aty ku metadat kanë rëndësi, dhe valido artefaktin e përfunduar ndaj gjatësisë ose shumës kontrolluese që kërkohet në të vërtetë. Leximi i trupit nuk bën që një kokë që mungonte më parë të shfaqet.

Artikuj të ngjashëm