मैं अपने एंड्रॉइड ऐप को एपीआई के माध्यम से अपने सर्वर से कनेक्ट करने के लिए Okhttp लाइब्रेरी का उपयोग करने का प्रयास कर रहा हूं।एंड्रॉइड Okhttp asynchronous कॉल
मेरा एपीआई कॉल बटन क्लिक पर हो रहा है और मुझे निम्नलिखित android.os.NetworkOnMainThreadException प्राप्त हो रहा है। मैं समझता हूं कि यह तथ्य है कि मैं मुख्य धागे पर नेटवर्क कॉल का प्रयास कर रहा हूं लेकिन मैं एंड्रॉइड पर एक साफ समाधान खोजने के लिए भी संघर्ष कर रहा हूं कि इस कोड को एक और थ्रेड (एसिंक कॉल) का उपयोग कैसे किया जाए।
@Override
public void onClick(View v) {
switch (v.getId()){
//if login button is clicked
case R.id.btLogin:
try {
String getResponse = doGetRequest("http://myurl/api/");
} catch (IOException e) {
e.printStackTrace();
}
break;
}
}
String doGetRequest(String url) throws IOException{
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
return response.body().string();
}
ऊपर मेरी कोड है, और अपवाद लाइन
Response response = client.newCall(request).execute();
Ive भी पढ़ा है कि Okhhtp Async अनुरोध का समर्थन करता है, लेकिन मैं वास्तव में अधिकांश के रूप में एंड्रॉयड के लिए एक साफ समाधान नहीं मिल सकता है पर फेंक दिया जा रहा है AsyncTask <> का उपयोग करने वाली एक नई कक्षा का उपयोग करने लगते हैं ??
कोई मदद या सुझाव बहुत सराहना कर रहे हैं, thankyou ...
है:
& यह इस तरह से फोन {try {...} पकड़ने की आवश्यकता नहीं है (IOException e) {...} 'और निश्चित रूप से' doGetRequest (स्ट्रिंग यूआरएल) IOException को फेंकता है {' –
@ वी। कल्याज़हनीयू कोशिश करें .. पकड़ फेंकने वाली त्रुटि को संभालेगा y 'doGetRequest'' IOException' – kirtan403
धन्यवाद। आप सही हैं –