getContentLengthLong() == -1 ifisser li m'hemmx tul tal-kontenut magħruf fil-metadata disponibbli. Kompli aqra l-fluss u uri l-bytes riċevuti jew progress mhux determinat; tqisux bħala tweġiba vojta u talloka l-ebda buffer ta' qies negattiv.

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

Il-konnessjoni hija diġà konfigurata u output huwa tal-sejjieħ. Żomm il-timeouts tal-konnessjoni u tal-qari u kwalunkwe limitu tal-qies tal-applikazzjoni madwar din il-linja. Żball I/O huwa niżżil fallut, mhux tlestija b'suċċess bi ftit bytes anqas.

Qabbel it-tulijiet fl-istess saff. Il-kodifikazzjoni chunked ta' HTTP/1.1 tista' tissostitwixxi Content-Length u hija dekowdata mill-implimentazzjoni HTTP. Proxy jista' jerġa' jiffurmaha. Id-dekompressjoni tista' wkoll tagħmel l-għadd ta' bytes dekowdati tal-applikazzjoni differenti minn Content-Length kodifikat.

Jekk jidhru kemm Transfer-Encoding kif ukoll Content-Length, tagħżilx numru konvenjenti: il-qafas HTTP jagħti preċedenza lill-kodifikazzjoni tat-trasferiment u jqis il-kombinazzjoni bħala żball possibbli. Ħalli dik il-parsing lil implimentazzjoni konformi.

URL FTP permezz ta' gateway HTTP jeħtieġ verifika tal-imġiba konkreta ta' URLConnection; ma tiggarantixxix li kull aċċessur tal-intestatura HTTP iġib ruħu bħal fuq URL HTTP ordinarju f'kull JDK. Uża l-API tat-tul b'valur twil fejn il-metadata tagħmel differenza, u ivvalida l-artefatt komplut kontra t-tul jew is-checksum li tassew meħtieġa. Il-qari tal-korp ma jagħmilx intestatura li qabel ma kinitx hemm tidher.

Artikli relatati