अपने फ़ोन में नेटवर्क ऑपरेशन करने के लिए, Cronet Library इस्तेमाल करने का तरीका जानें Android ऐप्लिकेशन. Cronet, Chromium नेटवर्क स्टैक है. इसे लाइब्रेरी के तौर पर उपलब्ध कराया गया है ऐप्लिकेशन में इस्तेमाल किए जा सकते हैं. लाइब्रेरी की सुविधाओं के बारे में ज़्यादा जानने के लिए, इसका उपयोग करके नेटवर्क ऑपरेशन करें Cronet.
अपने प्रोजेक्ट में लाइब्रेरी सेट अप करना
अपने प्रोजेक्ट की Cronet लाइब्रेरी में डिपेंडेंसी जोड़ने के लिए, यह तरीका अपनाएं:
पुष्टि करें कि Android Studio में Google की Maven रिपॉज़िटरी का रेफ़रंस शामिल है आपके प्रोजेक्ट की
settings.gradle
फ़ाइल में, जैसा कि यहां दिखाया गया है उदाहरण:ग्रूवी
dependencyResolutionManagement { ... repositories { ... google() } }
Kotlin
dependencyResolutionManagement { ... repositories { ... google() } }
Cronet के लिए Google Play Services क्लाइंट लाइब्रेरी का रेफ़रंस शामिल करें आपके ऐप्लिकेशन मॉड्यूल की
build.gradle
फ़ाइल केdependencies
सेक्शन में, इस तरह से नीचे दिए गए उदाहरण में दिखाया गया है:ग्रूवी
dependencies { implementation 'com.google.android.gms:play-services-cronet:18.0.1' }
Kotlin
dependencies { implementation("com.google.android.gms:play-services-cronet:18.0.1") }
इसके बाद CronetEngine
ऑब्जेक्ट बनाए गए
डिपेंडेंसी जोड़ी जाने पर, Google Play services से लोड किए गए Cronet का इस्तेमाल किया जाएगा. कॉल करें
CronetProviderInstaller.installProvider(Context)
अनचाहे अपवादों से बचने के लिए, CronetEngine
ऑब्जेक्ट बनाने से पहले
CronetEngine
बनाने के दौरान डिवाइस जैसी गड़बड़ियों की वजह से, कॉन्टेंट को फेंके जाने से रोका जा सकता है
इसके लिए, Google Play services का अपडेट किया हुआ वर्शन ज़रूरी है.
ऐसे मामलों में जहां Cronet को Google Play सेवाओं से लोड नहीं किया जा सकता है, वहां ऐसे मामलों में
Cronet के API को कम बेहतर तरीके से लागू करने की सुविधा, जिसका इस्तेमाल किया जा सकता है. इस्तेमाल करने के लिए
यह फ़ॉलबैक लागू करने की प्रोसेस, org.chromium.net:cronet-fallback
पर निर्भर करती है
और new JavaCronetProvider(context).createBuilder()
पर कॉल करें.
नेटवर्क अनुरोध करें
इस सेक्शन में, Cronet का इस्तेमाल करके नेटवर्क अनुरोध बनाने और उसे भेजने का तरीका बताया गया है लाइब्रेरी. नेटवर्क अनुरोध भेजने के बाद, आपके ऐप्लिकेशन को नेटवर्क प्रोसेस करना चाहिए जवाब.
CronetEngine का एक इंस्टेंस बनाएं और उसे कॉन्फ़िगर करें
लाइब्रेरी
CronetEngine.Builder
क्लास
जिसका इस्तेमाल करके, एक इंस्टेंस बनाया जा सकता है
CronetEngine
. यह उदाहरण
CronetEngine
ऑब्जेक्ट बनाने का तरीका दिखाता है:
Kotlin
val myBuilder = CronetEngine.Builder(context) val cronetEngine: CronetEngine = myBuilder.build()
Java
CronetEngine.Builder myBuilder = new CronetEngine.Builder(context); CronetEngine cronetEngine = myBuilder.build();
Builder
क्लास का इस्तेमाल करके,
CronetEngine
ऑब्जेक्ट का इस्तेमाल करें, उदाहरण के लिए आप यह कर सकते हैं
कैश मेमोरी और डेटा कंप्रेशन जैसे विकल्प देने चाहिए. ज़्यादा जानकारी के लिए, यह देखें
CronetEngine.Builder
.
अनुरोध कॉलबैक को लागू करने की सुविधा दें
कॉलबैक लागू करने के लिए, एक सब-क्लास बनाएं
UrlRequest.Callback
और
नीचे दिए गए उदाहरण के मुताबिक, ज़रूरी एब्सट्रैक्ट तरीकों को लागू करें:
Kotlin
private const val TAG = "MyUrlRequestCallback" class MyUrlRequestCallback : UrlRequest.Callback() { override fun onRedirectReceived(request: UrlRequest?, info: UrlResponseInfo?, newLocationUrl: String?) { Log.i(TAG, "onRedirectReceived method called.") // You should call the request.followRedirect() method to continue // processing the request. request?.followRedirect() } override fun onResponseStarted(request: UrlRequest?, info: UrlResponseInfo?) { Log.i(TAG, "onResponseStarted method called.") // You should call the request.read() method before the request can be // further processed. The following instruction provides a ByteBuffer object // with a capacity of 102400 bytes for the read() method. The same buffer // with data is passed to the onReadCompleted() method. request?.read(ByteBuffer.allocateDirect(102400)) } override fun onReadCompleted(request: UrlRequest?, info: UrlResponseInfo?, byteBuffer: ByteBuffer?) { Log.i(TAG, "onReadCompleted method called.") // You should keep reading the request until there's no more data. byteBuffer.clear() request?.read(byteBuffer) } override fun onSucceeded(request: UrlRequest?, info: UrlResponseInfo?) { Log.i(TAG, "onSucceeded method called.") } }
Java
class MyUrlRequestCallback extends UrlRequest.Callback { private static final String TAG = "MyUrlRequestCallback"; @Override public void onRedirectReceived(UrlRequest request, UrlResponseInfo info, String newLocationUrl) { Log.i(TAG, "onRedirectReceived method called."); // You should call the request.followRedirect() method to continue // processing the request. request.followRedirect(); } @Override public void onResponseStarted(UrlRequest request, UrlResponseInfo info) { Log.i(TAG, "onResponseStarted method called."); // You should call the request.read() method before the request can be // further processed. The following instruction provides a ByteBuffer object // with a capacity of 102400 bytes for the read() method. The same buffer // with data is passed to the onReadCompleted() method. request.read(ByteBuffer.allocateDirect(102400)); } @Override public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBuffer byteBuffer) { Log.i(TAG, "onReadCompleted method called."); // You should keep reading the request until there's no more data. byteBuffer.clear(); request.read(byteBuffer); } @Override public void onSucceeded(UrlRequest request, UrlResponseInfo info) { Log.i(TAG, "onSucceeded method called."); } }
नेटवर्क टास्क मैनेज करने के लिए, एक एक्ज़ीक्यूटिव ऑब्जेक्ट बनाएं
नेटवर्क चलाने के लिए, Executor
क्लास का इस्तेमाल किया जा सकता है
टास्क.
Executor
का इंस्टेंस पाने के लिए, इनमें से किसी एक का इस्तेमाल करें
Executors
क्लास के वे स्टैटिक तरीके जो वापस आते हैं
एक Executor
ऑब्जेक्ट. नीचे दिए गए उदाहरण में, Executor
बनाने का तरीका बताया गया है
newSingleThreadExecutor()
का इस्तेमाल करके बनाया गया ऑब्जेक्ट
तरीका:
Kotlin
val executor: Executor = Executors.newSingleThreadExecutor()
Java
Executor executor = Executors.newSingleThreadExecutor();
UrlRequest ऑब्जेक्ट बनाएं और कॉन्फ़िगर करें
नेटवर्क अनुरोध करने के लिए,
newUrlRequestBuilder()
पास करने का तरीका CronetEngine
गंतव्य URL, आपकी कॉलबैक क्लास का एक इंस्टेंस, और एक्ज़िकेटर ऑब्जेक्ट.
newUrlRequestBuilder()
तरीका नतीजे के तौर पर
UrlRequest.Builder
ऑब्जेक्ट जो
तो आप UrlRequest
को बनाने के लिए
ऑब्जेक्ट, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
Kotlin
val requestBuilder = cronetEngine.newUrlRequestBuilder( "https://www.example.com", MyUrlRequestCallback(), executor ) val request: UrlRequest = requestBuilder.build()
Java
UrlRequest.Builder requestBuilder = cronetEngine.newUrlRequestBuilder( "https://www.example.com", new MyUrlRequestCallback(), executor); UrlRequest request = requestBuilder.build();
Builder
क्लास का इस्तेमाल इन कामों के लिए किया जा सकता है
UrlRequest
के इंस्टेंस को कॉन्फ़िगर करें. इसके लिए
उदाहरण के लिए, आप कोई प्राथमिकता या HTTP क्रिया तय कर सकते हैं. ज़्यादा जानकारी के लिए, यह देखें
UrlRequest.Builder
.
नेटवर्क टास्क शुरू करने के लिए,
अनुरोध का start()
तरीका:
Kotlin
request.start()
Java
request.start();
इस सेक्शन में दिए गए निर्देशों का पालन करके, नेटवर्क बनाया और भेजा जा सकता है
Cronet का इस्तेमाल करके अनुरोध करें. हालांकि, सरलता के लिए, उदाहरण के लिए
लागू करना
UrlRequest.Callback
सिर्फ़ प्रिंट
लॉग के लिए एक संदेश. नीचे दिए गए सेक्शन में, कॉलबैक करने का तरीका बताया गया है
ऐसा लागू किया गया है जो ज़्यादा काम की स्थितियों के साथ काम करता है, जैसे कि
और अनुरोध में गड़बड़ी का पता लगाकर.
नेटवर्क से मिले रिस्पॉन्स को प्रोसेस करें
start()
को कॉल करने के बाद
तरीका है, तो Cronet अनुरोध का लाइफ़साइकल शुरू हो जाता है. आपके ऐप्लिकेशन को
कॉलबैक तय करके लाइफ़साइकल के दौरान अनुरोध करें. इस बारे में ज़्यादा जानने के लिए
लाइफ़साइकल, Cronet का अनुरोध देखें
लाइफ़साइकल. आप
इसकी सब-क्लास बनाकर कॉलबैक करें
UrlRequest.Callback
और
नीचे दिए गए तरीके लागू करें:
onRedirectReceived()
तब शुरू किया जाता है जब सर्वर मूल अनुरोध. नए डेस्टिनेशन पर रीडायरेक्ट को फ़ॉलो करने के लिए,
followRedirect()
तरीका. अगर ऐसा नहीं है, तोcancel()
का इस्तेमाल करें तरीका. नीचे दिए गए उदाहरण में, इस तरीके को लागू करने का तरीका बताया गया है:Kotlin
override fun onRedirectReceived(request: UrlRequest?, info: UrlResponseInfo?, newLocationUrl: String?) { // Determine whether you want to follow the redirect. ... if (shouldFollow) { request?.followRedirect() } else { request?.cancel() } }
Java
@Override public void onRedirectReceived(UrlRequest request, UrlResponseInfo info, String newLocationUrl) { // Determine whether you want to follow the redirect. … if (shouldFollow) { request.followRedirect(); } else { request.cancel(); } }
onResponseStarted()
हेडर का फ़ाइनल सेट मिलने के बाद शुरू किया जाता है.
onResponseStarted()
यह तरीका सभी रीडायरेक्ट को फ़ॉलो करने के बाद ही शुरू किया जाता है. यह कोड इस तरीके को लागू करने का एक उदाहरण दिया गया है:Kotlin
override fun onResponseStarted(request: UrlRequest?, info: UrlResponseInfo?) { val httpStatusCode = info?.httpStatusCode if (httpStatusCode == 200) { // The request was fulfilled. Start reading the response. request?.read(myBuffer) } else if (httpStatusCode == 503) { // The service is unavailable. You should still check if the request // contains some data. request?.read(myBuffer) } responseHeaders = info?.allHeaders }
Java
@Override public void onResponseStarted(UrlRequest request, UrlResponseInfo info) { int httpStatusCode = info.getHttpStatusCode(); if (httpStatusCode == 200) { // The request was fulfilled. Start reading the response. request.read(myBuffer); } else if (httpStatusCode == 503) { // The service is unavailable. You should still check if the request // contains some data. request.read(myBuffer); } responseHeaders = info.getAllHeaders(); }
onReadCompleted()
जब भी जवाब के मुख्य हिस्से को पढ़ा जा चुका हो, तब इसे शुरू किया जाता है. यह कोड उदाहरण में, तरीके को लागू करने और रिस्पॉन्स का मुख्य हिस्सा निकालने का तरीका बताया गया है:
Kotlin
override fun onReadCompleted(request: UrlRequest?, info: UrlResponseInfo?, byteBuffer: ByteBuffer?) { // The response body is available, process byteBuffer. ... // Continue reading the response body by reusing the same buffer // until the response has been completed. byteBuffer?.clear() request?.read(myBuffer) }
Java
@Override public void onReadCompleted(UrlRequest request, UrlResponseInfo info, ByteBuffer byteBuffer) { // The response body is available, process byteBuffer. … // Continue reading the response body by reusing the same buffer // until the response has been completed. byteBuffer.clear(); request.read(myBuffer); }
onSucceeded()
नेटवर्क अनुरोध के पूरा होने पर शुरू किया जाता है. नीचे दिए गए उदाहरण में इस तरीके को लागू करने का तरीका बताया गया है:
Kotlin
override fun onSucceeded(request: UrlRequest?, info: UrlResponseInfo?) { // The request has completed successfully. }
Java
@Override public void onSucceeded(UrlRequest request, UrlResponseInfo info) { // The request has completed successfully. }
onFailed()
अनुरोध तब शुरू किया जाता है, जब किसी वजह से अनुरोध पूरा नहीं हो पाता है.
start()
तरीके को कॉल किया गया. कॉन्टेंट बनाने नीचे दिए गए उदाहरण में, इस तरीके को लागू करने और गड़बड़ी:Kotlin
override fun onFailed(request: UrlRequest?, info: UrlResponseInfo?, error: CronetException?) { // The request has failed. If possible, handle the error. Log.e(TAG, "The request failed.", error) }
Java
@Override public void onFailed(UrlRequest request, UrlResponseInfo info, CronetException error) { // The request has failed. If possible, handle the error. Log.e(TAG, "The request failed.", error); }
onCanceled()
अनुरोध तब शुरू किया जाता है, जब
cancel()
तरीका. एक बार शुरू करने के बाद, नहीं इस्तेमाल करने का तरीकाUrlRequest.Callback
क्लास यह है शुरू किया गया. आप चाहें, तो इस तरीके का इस्तेमाल करके, अनुरोध. नीचे दिए गए उदाहरण में, इस तरीके को लागू करने का तरीका बताया गया है:Kotlin
override fun onCanceled(request: UrlRequest?, info: UrlResponseInfo?) { // Free resources allocated to process this request. ... }
Java
@Override public void onCanceled(UrlRequest request, UrlResponseInfo info) { // Free resources allocated to process this request. … }