Java JSON Android错误
我正在尝试制作一个简单的应用程序,它获取存储在JSON文件中的时间 然而,我得到以下错误Java JSON Android错误,java,android,json,Java,Android,Json,我正在尝试制作一个简单的应用程序,它获取存储在JSON文件中的时间 然而,我得到以下错误 FATAL EXCEPTION: AsyncTask #1 Process: com.adeel.android.jsondemo, PID: 10751 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java
FATAL EXCEPTION: AsyncTask #1
Process: com.adeel.android.jsondemo, PID: 10751
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.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$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
at java.net.InetAddress.lookupHostByName(InetAddress.java:451)
at java.net.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.android.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:361)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
at com.adeel.android.jsondemo.MainActivity$DownloadTask.doInBackground(MainActivity.java:39)
at com.adeel.android.jsondemo.MainActivity$DownloadTask.doInBackground(MainActivity.java:25)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
at libcore.io.Posix.android_getaddrinfo(Native Method)
at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
at java.net.InetAddress.lookupHostByName(InetAddress.java:438)
at java.net.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.android.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:361)
at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:289)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:373)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:323)
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:190)
at com.adeel.android.jsondemo.MainActivity$DownloadTask.doInBackground(MainActivity.java:39)
at com.adeel.android.jsondemo.MainActivity$DownloadTask.doInBackground(MainActivity.java:25)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied)
我已经试着解决这一问题好几天了,但我没有运气
另外,我是android编程的初学者
这是我的JSON java类
import android.os.AsyncTask;
import android.util.Log;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class DownloadJSONData extends AsyncTask<String, Void, String> {
public final String DATE_URL = "http://date.jsontest.com/";
String result = "";
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(DATE_URL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
InputStream in = httpURLConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(in);
int data = inputStreamReader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = inputStreamReader.read();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
try {
JSONObject jsonObject = new JSONObject(result);
String date = jsonObject.optString("time");
Log.d("JSONDEMO: ", "The time is: " + date);
} catch (JSONException e) {
e.printStackTrace();
}
super.onPostExecute(s);
}
}
我在以下代码行中遇到此错误:
public class DownloadJSONData extends AsyncTask<String, Void, String> // line 21 of the DownloadJSONData class
httpURLConnection.connect(); // line 36 of the DownloadJSONData Class
public类DownloadJSONData扩展了DownloadJSONData类的AsyncTask//第21行
httpURLConnection.connect();//下载JSONDATA类的第36行
感谢您的帮助。如果你能帮我编写代码或者让我参考一些文档
非常感谢您需要在manifest.xml中包含
android.permission.INTERNET
,否则您将无法使用它
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
您必须在应用程序标记上方的清单中添加Internet权限
<uses-permission android:name="android.permission.INTERNET" />
您的doInBackground方法始终返回null,请更改它缺少INTERNET权限?
显示在stacktrace中。您必须将internet权限添加到项目清单中太棒了!!非常感谢你。。我总是忘记添加权限
<uses-permission android:name="android.permission.INTERNET" />