Java JSON Android错误

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

我正在尝试制作一个简单的应用程序,它获取存储在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: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" />