Ukulanda kwe-Java ngommeleli lapho i-getContentLengthLong ibuyisela u--1
Phatha i-Content-Length engaziwa ekulandeni kwe-Java ngommeleli ngaphandle kokuthatha imethadatha yosayizi engekho njengempendulo engenalutho.
I-getContentLengthLong() == -1 isho ukuthi akukho ubude bokugcwalisa obaziwayo kumethadatha etholakalayo. Qhubeka ufunda umfudlana futhi ubonise amabhayithi atholiwe noma inqubekelaphambili engaqinisekile; ungakuthathi njengempendulo engenalutho futhi unganikezeli ibhafa enosayizi ongafanele.
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;
}
}
Ukuxhumana sekulungisiwe futhi i-output ingeyombizi. Gcina izikhathi zokuphela kokuxhumana nokufunda kanye nanoma yimuphi umkhawulo wosayizi wohlelo nxazonke kwalolu phiko. Iphutha le-I/O ukulanda okuhlulekile, hhayi ukuqedwa okuphumelelayo ngamabhayithi ambalwa.
Qhathanisa ubude esigabeni esifanayo. Ukubhalwa kwe-chunked kwe-HTTP/1.1 kungashintsha i-Content-Length futhi kuhunyushwa uhlelo lwe-HTTP. Ummeleli angayihlela kabusha. Ukuncipha kokucindezelwa nakho kungenza inani lamabhayithi ahunyushiwe ohlelo lihluke kwi-Content-Length ebhaliwe.
Uma kokubili i-Transfer-Encoding ne-Content-Length kuvela, ungakhethi inombolo elula: ukuhlanganisa kwe-HTTP kunikeza ukubhalwa kokudluliswa iginqikithi futhi kuthatha inhlanganisela njengephutha elingenzeka. Shiya lokho kuhlaziya kokusetshenziswa okuhambisana.
I-URL ye-FTP ngomhubhe we-HTTP idinga ukuhlolwa kokuziphatha okuqondile kwe-URLConnection; ayiqinisekisi ukuthi sonke isifinyeleli sesihloko se-HTTP siziphatha njenge-URL ye-HTTP evamile kuyo yonke i-JDK. Sebenzisa i-length API enenani elide lapho imethadatha ibalulekile, futhi qinisekisa into eqediwe ngokumelene nobude noma i-checksum edingekayo ngempela. Ukufunda umzimba akukwenzi isihloko ebesingekho ngaphambili sivele.