Есть несколько причин, по которым ваш код работает не так, как вы ожидаете.
Во-первых: Убедитесь, что вы правильно настроили манифест Android, включив разрешение ИНТЕРНЕТ и разрешив трафик открытым текстом.
<?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();
Попробуйте это и посмотрите, что произойдет. Публиковать сообщения об ошибках, чтобы помочь себе и другим точно определить, что не так. Я столкнулся с проблемами, когда впервые сделал это, и именно эти решения помогли мне.
Ура!
Редактировать: форматирование