我正在构建一个应用程序,使用从黑客新闻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错误,只是一个一般的异常。
我在谷歌上搜索了一下,试图了解错误的含义和修复方法,但所有答案(或原始帖子)似乎都与我正在做的事情无关。我也不太了解——发生错误的程序和答案都远远超出我的知识和技能水平。这是网络问题吗?
我需要有人帮我把这件事说清楚。
暂无答案!
目前还没有任何答案,快来回答吧!