getContentLengthLong() == -1 macneheedu waa in aanay jirin dherer macluumaad la garanayo oo ku jira xogta la heli karo. Sii wad akhrinta qulqulka oo muuji baaqyada la helay ama horumar aan la go'aamin; ha u qaadan jawaab madhan oo ha u qoondeyn bakhaar cabbir taban leh.

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

Xiriirka hore ayaa loo habeeyay oo output waxaa leh wacitaanka. Ku hay waqtiyada xiriirka iyo akhrinta iyo wax kasta oo xaddidaya cabbirka barnaamijka hareeraha wareeggan. Khalad I/O waa soo-dejin guul darro, ma aha dhammaystir guul leh oo baaqyo yar.

Isbarbar dhig dhererrada isla lakabka. Koodhka chunked ee HTTP/1.1 wuxuu beddeli karaa Content-Length oo waxaa furfura hirgelinta HTTP. Boroksi wuu dib u qaabayn karaa. Furfurnaanta ayaa sidoo kale ka dhigi kartaa tirada baaqyada la furay ee barnaamijka mid ka duwan Content-Length la koodhay.

Haddii ay labaduba soo baxaan Transfer-Encoding iyo Content-Length, ha dooran tiro ku habboon: qaabaynta HTTP waxay mudnaan siinaysaa koodhka gudbinta oo waxay isku-darka u qaadataa khalad suurtagal ah. U dhiib falanqayntaas hirgelin waafaqsan.

URL FTP oo mara albaabka HTTP waxay u baahan tahay in la hubiyo dhaqanka URLConnection ee la taaban karo; ma dammaanad qaadinaya in gelitaan kasta oo madax HTTP uu u dhaqmo sida URL HTTP caadi ah JDK kasta. Isticmaal length API oo leh qiime dheer meesha xogta ay muhiim tahay, oo hubi wax-soo-saarka dhammaystiran marka la eego dhererka ama checksum ee dhab ahaan loo baahan yahay. Akhrinta jidhka ma keento in madax hore u maqnaa uu soo muuqdo.

Maqaallo la xiriira