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 আচৰণ পৰীক্ষা কৰিব লাগে; ই প্ৰতিটো JDK ত সাধাৰণ HTTP URL ৰ দৰে প্ৰতিটো HTTP হেডাৰ এক্সেছৰ আচৰণৰ নিশ্চয়তা নিদিয়ে। মেটাডেটা গুৰুত্বপূৰ্ণ হোৱা ঠাইত দীঘ-মানৰ length API ব্যৱহাৰ কৰক, আৰু সম্পূৰ্ণ হোৱা আৰ্টিফেক্টক প্ৰকৃততে প্ৰয়োজনীয় দীঘ বা চেকচামৰ সৈতে বৈধ কৰক। শৰীৰ পঢ়িলে আগতে অনুপস্থিত হেডাৰ ওলাই নপৰে।

সম্পৰ্কিত প্ৰবন্ধ