getContentLengthLong() == -1 ማለት በሚገኘው ሜታዳታ ውስጥ የሚታወቅ የይዘት ርዝመት አለመኖሩን ነው። ጅረቱን መነበብን ይቀጥሉ እና የተቀበሉትን ባይቶች ወይም ያልተወሰነ ሂደት ያሳዩ፤ እንደ ባዶ ምላሽ አይውሰዱት እና አሉታዊ መጠን ያለው ቋት አይመድቡ።

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;
    }
}

ግንኙነቱ አስቀድሞ ተዘጋጅቷል እና output የጠሪው ነው። የግንኙነትና የንባብ ጊዜ ገደቦችን እና ማንኛውንም የመተግበሪያ መጠን ገደብ በዚህ ዑደት ዙሪያ ያቆዩ። የI/O ስህተት ያልተሳካ ማውረድ ነው፣ በትንሽ ባይት የተሳካ ማጠናቀቅ አይደለም።

ርዝመቶችን በተመሳሳይ ክፍል ውስጥ ያወዳድሩ። የHTTP/1.1 chunked ኮዲንግ Content-Length ን ሊተካ ይችላል እና በHTTP አፈጻጸሙ ይተረጎማል። ፕሮክሲ እንደገና ሊያዋቅረው ይችላል። መቀነስ እንዲሁ የመተግበሪያው የተጣራ ባይት ቁጥር ከተጠራው Content-Length እንዲለይ ያደርጋል።

Transfer-Encoding እና Content-Length ሁለቱም ከተገኙ፣ ምቹ ቁጥር አይምረጡ፦ የHTTP ማዕቀፍ ለማስተላለፊያ ኮዲንግ ቅድሚያ ይሰጣል እና ጥምሩን እንደ ሊሆን የሚችል ስህተት ይቆጥራል። ያንን ትንተና ተገዢ ለሆነ አፈጻጸም ይተውት።

በHTTP ጌትዌይ በኩል የሚያልፍ FTP URL የተወሰነውን URLConnection ባህሪ መመርመር ይፈልጋል፤ ሁሉም የHTTP ራስጌ መዳረሻዎች በሁሉም JDK ውስጥ እንደ ተራ HTTP URL እንደሚሠሩ አይማረጥም። ሜታዳታ በሚጠቅምበት ቦታ ረዥሙን እሴት የሚሰጠውን የርዝመት API ይጠቀሙ፣ እና የተጠናቀቀውን ስነ-ምስል በትክክል ከሚፈለገው ርዝመት ወይም የፍተሻ ድምር ጋር ያረጋግጡ። አካሉን ማንበብ ቀደም ሲል የጠፋ ራስጌ እንዲታይ አያደርግም።

ተዛማጅ ጽሑፎች