मेरा कार्य यहां है। अक्षांश और देशांतर की एक जोड़ी को देखते हुए, मैं Google स्थल API से JSON प्राप्त करना चाहता हूं। निम्नलिखित फ़ंक्शन, रिवर्सजीओकोडिंग, स्ट्रिंग JSON लौटाता है।एंड्रॉइड प्लेटफ़ॉर्म पर HttpsURLConnectionImpl.getInputStream() त्रुटि
public String reverseGeoCoding(String lat, String lng) {
latitude = lat;
longitude = lng;
String json = new String();
String url = new String();
URL googleAPI;
try {
url = URL + "location=" + latitude + "," + longitude + "&" + "radius=" + radius + "&" + "language=" + language + "&" + "sensor=false" + "&" + "key=" + APIKey;
googleAPI = new URL(url);
Log.d("TEST", googleAPI.toString());
URLConnection gc = (URLConnection) googleAPI.openConnection();
Log.d("TEST", gc.toString());
InputStream is = gc.getInputStream();
Log.d("TEST", "InputStream created");
BufferedReader in = new BufferedReader(new InputStreamReader(is));
Log.d("TEST", "reader created");
String inputLine;
while ((inputLine = in.readLine()) != null) {
json = json + inputLine + "\n";
Log.d("TEST", inputLine);
}
in.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return json;
}
हालांकि, getInputStream() काम नहीं करता है। मैंने वेब ब्राउज़र पर यूआरएल अनुरोध की जांच की है, और यह ठीक से काम करता है (एक JSON दस्तावेज़ को पुनर्प्राप्त करना)।
त्रुटि संदेश नीचे दिए गए हैं। (क्यों लाइनों 17 और 18 त्रुटियां उत्पन्न)
1. 12-11 00:46:02.862: W/System.err(12953): android.os.NetworkOnMainThreadException
2. 12-11 00:46:02.872: W/System.err(12953): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1084)
3. 12-11 00:46:02.872: W/System.err(12953): at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
4. 12-11 00:46:02.872: W/System.err(12953): at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
5. 12-11 00:46:02.872: W/System.err(12953): at java.net.InetAddress.getAllByName(InetAddress.java:220)
6. 12-11 00:46:02.872: W/System.err(12953): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
7. 12-11 00:46:02.872: W/System.err(12953): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
8. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
9. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
10. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
11. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:308)
12. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:460)
13. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:432)
14. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:282)
15. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:232)
16. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:273)
17. 12-11 00:46:02.882: W/System.err(12953): at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:168)
18. 12-11 00:46:02.894: W/System.err(12953): at libcore.net.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:270)
19. 12-11 00:46:02.894: W/System.err(12953): at locationpredict.POIList.reverseGeoCoding(POIList.java:55)
20. 12-11 00:46:02.894: W/System.err(12953): at locationpredict.TestMain$1.onClick(TestMain.java:62)
समस्या हल हो गई !! आपका बहुत बहुत धन्यवाद। – jaehui
एक और सवाल, ओवरराइड विधि ,PostExecute वापसी शून्य पर। मैं Google Places API से onPostExecute तक परिणाम कैसे प्राप्त कर सकता हूं? – jaehui
परिणाम स्ट्रिंग परिणाम में हैं। आप अपने जेसन को onPostExecute() विधि के अंदर पार्स कर सकते हैं। या इसे मेरे उदाहरण की तरह एक विधि के साथ पास करें और क्लीनर कोड के लिए इसे पार्स करें। –