java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点(android studio java)

gcuhipw9  于 2021-09-13  发布在  Java
关注(0)|答案(0)|浏览(196)

我正在构建一个应用程序,使用从黑客新闻api下载的数据,https://github.com/hackernews/api . 目前没有xml,只有下载一些数据的java代码:

package com.example.newsreader;

import androidx.appcompat.app.AppCompatActivity;
import androidx.loader.content.AsyncTaskLoader;

import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.channels.AsynchronousChannelGroup;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

ArrayList<String> titles;
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DownloadTask task = new DownloadTask();
    task.execute("https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty");

}

public class DownloadTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... strings) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection = null;

        try {

            url = new URL(strings[0]);
            urlConnection = (HttpURLConnection) url.openConnection();

            InputStream in = urlConnection.getInputStream();
            InputStreamReader reader = new InputStreamReader(in);

            int data = reader.read();

            while (data != -1) {
                char current = (char) data;
                result += current;
                data = reader.read();
            }

            Log.i("Result", result);

            JSONArray jsonArray = new JSONArray(result);

            for (int i = 0; i < jsonArray.length(); i++) {
                Log.i("JSONItem", jsonArray.getString(i));
            }

        } catch (MalformedURLException e) {
            e.printStackTrace();
            Log.i("Info", "Malformed URL");
        } catch (JSONException e) {
            e.printStackTrace();
            Log.i("Info", "JSON error");
        } catch (Exception e) {
            e.printStackTrace();
            Log.i("Info", "Unknown error");
        }

        return result;
    }
}
}

最初几次下载效果很好,我甚至在日志中显示了我的数据。但是,当我添加此部分时:

JSONArray jsonArray = new JSONArray(result);

            for (int i = 0; i < jsonArray.length(); i++) {
                Log.i("JSONItem", jsonArray.getString(i));
            }

我收到错误:java.security.cert.CertPathValidator异常:找不到证书路径的信任锚点。
当我删除该代码时,错误消息仍然存在。try-catch子句确认这不是一个json错误,只是一个一般的异常。
我在谷歌上搜索了一下,试图了解错误的含义和修复方法,但所有答案(或原始帖子)似乎都与我正在做的事情无关。我也不太了解——发生错误的程序和答案都远远超出我的知识和技能水平。这是网络问题吗?
我需要有人帮我把这件事说清楚。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题