Ciallaíonn getContentLengthLong() == -1 nach bhfuil aon fhad inneachair ar eolas sna meiteashonraí atá ar fáil. Lean ort ag léamh an tsrutha agus taispeáin na bearta a fuarthas nó dul chun cinn neamhchinnte; ná déan é a mheas mar fhreagra folamh agus ná leithroinn maolán de mhéid diúltach.

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

Tá an nasc cumraithe cheana féin agus is leis an nglaoiteoir output. Coinnigh amanna caighdeánacha naisc agus léitheoireachta agus aon teorainn mhéide ar an bhfeidhmchlár timpeall an lúb seo. Is íoslódáil theipte é earráid I/O, ní críochnú rathúil le níos lú beart.

Déan fadanna a chur i gcomparáid ag an gciseal céanna. Is féidir le codú chunked HTTP/1.1 Content-Length a ionadú agus díchódaíonn cur i bhfeidhm HTTP é. Is féidir le seachvótálaí é a athfhrámú. Is féidir le dí-chomhbhrú freisin a dhéanamh go mbeidh líon na mbeart díchódaithe sa fheidhmchlár difriúil ó Content-Length códaithe.

Má thagann Transfer-Encoding agus Content-Length araon chun solais, ná roghnaigh uimhir áisiúil: tugann frámú HTTP tosaíocht don chódú aistrithe agus measann sé an teaglaim mar earráid fhéideartha. Fág an pharsáil sin ag cur i bhfeidhm comhréireach.

Teastaíonn seiceáil ar iompar nithiúil URLConnection ó URL FTP trí gheata HTTP; ní ráthaíonn sé go n-iompraíonn gach rochtain ceannteidil HTTP mar a dhéanann sé ar URL HTTP nóithiúil i ngach JDK. Úsáid an API faid le luach fada mar a bhfuil meiteashonraí tábhachtach, agus bailíoch an déantán críochnaithe i gcoinne an fhaid nó an tsuim sheiceála atá ag teastáil i ndáiríre. Ní dhéanann léamh an choirp ceannteideal a bhí as láthair roimhe a thaispeáint.

Ailt ghaolmhara