java.lang.RuntimeException:执行doInBackground时发生错误(
处理:com.example.dell.api,PID:22968 java.lang.RuntimeException:在java.util.concurrent处的android.os.AsyncTask $ 3.done(AsyncTask.java:304)处执行doInBackground()时发生错误。 FutureTask.finishCompletion(FutureTask.java:355)at java.util.concurrent.FutureTask.setException(FutureTask.java:222)at java.util.concurrent.FutureTask.run(FutureTask.java:242)at android.os.AsyncTask $ java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)上的$ SerialExecutor $ 1.run(AsyncTask.java:231)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)at java .lang.Thread.run(Thread.java:818)导致:java.lang.SecurityException:在java.net上的java.net.InetAddress.lookupHostByName(InetAddress.java:451)处的权限被拒绝(缺少INTERNET权限?)。 InetAddress.getAllByNameImpl(InetAddress.java:252)at java.net.InetAddress.getAllByName(InetAddress.java:215)at com.android.okhttp.HostResolver $ 1.getAllByName(HostResolver.java:29)at com.an droid.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)at com.android.okhttp.internal.http。 HttpEngine.connect(HttpEngine.java:370)at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:298)at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java: 399)at com.android.okhttp.internal.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:110)at com.android.okhttp.internal.http.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)at com.android.okhttp .internal.http.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:25)at com.example.dell.api.MainActivity $ JSONTask.doInBackground(MainActivity.java:147)at com.example.dell.api.MainActivity $ JSONTask.doInBackground (MainActivity.java:131)at android.os.AsyncTask $ 2.call(AsyncTask.java:292)at java.util.concurrent.FutureTask.run(FutureTas 在java.util.concurrent.ThreadPoolExecutor上的java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)$ android.os.AsyncTask $ SerialExecutor $ 1.run(AsyncTask.java:231) Worker.run(ThreadPoolExecutor.java:587)在java.lang.Thread.run(Thread.java:818)
这是我的代码:
protected List<MovieModel> doInBackground(String... params) {
HttpURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
String finalJson = buffer.toString();
JSONObject parentObject = new JSONObject(finalJson);
JSONArray parentArray = parentObject.getJSONArray("movies");
List<MovieModel> movieModelList = new ArrayList<>();
Gson gson = new Gson();
for (int i = 0; i < parentArray.length(); i++) {
JSONObject finalObject = parentArray.getJSONObject(i);
/**
* below single line of code from Gson saves you from writing the json parsing yourself
* which is commented below
*/
MovieModel movieModel = gson.fromJson(finalObject.toString(), MovieModel.class); // a single line json parsing using Gson
movieModel.setMovie(finalObject.getString("movie"));
movieModel.setYear(finalObject.getInt("year"));
movieModel.setRating((float) finalObject.getDouble("rating"));
movieModel.setDirector(finalObject.getString("director"));
movieModel.setDuration(finalObject.getString("duration"));
movieModel.setTagline(finalObject.getString("tagline"));
movieModel.setImage(finalObject.getString("image"));
movieModel.setStory(finalObject.getString("story"));
List<MovieModel.Cast> castList = new ArrayList<>();
for (int j = 0; j < finalObject.getJSONArray("cast").length(); j++) {
MovieModel.Cast cast = new MovieModel.Cast();
cast.setName(finalObject.getJSONArray("cast").getJSONObject(j).getString("name"));
castList.add(cast);
}
movieModel.setCastList(castList);
// adding the final object in the list
movieModelList.add(movieModel);
}
return movieModelList;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
enter code here
你忘了在你的清单中添加INTERNET权限
<uses-permission android:name="android.permission.INTERNET" />
链接地址: http://www.djcxy.com/p/78427.html
上一篇: java.lang.RuntimeException: An error occured while executing doInBackground(