我开始学习Android,但遇到了无法解决的问题:我的URL具有JSON对象:http://jsonplaceholder.typicode.com/todos 我正在尝试在java-androidstudio中连接URL,然后选择确切的值,假设我想要id = 1的标题值并将其放入我的textView(textview id为'com1')
我已经看过这段代码了,该代码应该至少将id值添加到textview中。...但实际上并没有做任何事情
String sURL = "http://jsonplaceholder.typicode.com/todos";
URL url = new URL(sURL);
URLConnection request = url.openConnection();
request.connect();
JsonParser jp = new JsonParser(); //from gson
JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
String idcko = rootobj.get("id").getAsString();
TextView textElement = (TextView) findViewById(R.id.com1);
textElement.setText(idcko);
答案 0 :(得分:0)
答案 1 :(得分:0)
有几个原因导致您的代码无法按预期运行。
首先:通过启用INTERNET权限并允许明文流量,确保已正确配置了Android Manifest。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.sandbox"
android:targetSandboxVersion="1">
<uses-permission android:name="android.permission.INTERNET" />
<application
andoird:useCleartextTraffix="true"
... />
第二:确保您正在AsyncTask
中执行请求。 Android不允许HTTP请求在主线程上运行。为了克服这个问题,请创建一个扩展AsyncTask
抽象类的新任务。
class UrlRequestTask extends AsyncTask<Void, Void, Void> {
protected void doInBackground() {
String sURL = "http://jsonplaceholder.typicode.com/todos";
URL url = new URL(sURL);
URLConnection request = url.openConnection();
request.connect();
JsonParser jp = new JsonParser(); //from gson
JsonElement root = jp.parse(new InputStreamReader((InputStream)
request.getContent()));
JsonObject rootobj = root.getAsJsonObject();
String idcko = rootobj.get("id").getAsString();
TextView textElement = (TextView) findViewById(R.id.com1);
textElement.setText(idcko);
}
}
然后您可以在任何活动的onCreate
中调用任务,如下所示:
new UrlRequestTask().execute();
尝试这些事情,看看会发生什么。发布错误消息,以帮助自己和他人确定出什么问题了。第一次我也遇到问题,这些解决方案对我有所帮助。
干杯!
编辑:格式化