Я пытаюсь получить информацию с веб-сайта и отобразить ее в приложении для Android. Второй ответ на вопрос «Какой самый быстрый способ очистить веб-страницу HTML в Android?» предложил использовать BufferedReader. В ответ человек использует класс URL. Я попытался реализовать ответ следующим образом:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class MainActivity extends AppCompatActivity {
TextView display = (TextView) findViewById(R.id.textDisplay);
@Override
protected void onCreate(Bundle savedInstanceState) throws Exception {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
URL url = new URL("http://stackoverflow.com/questions/2971155");
BufferedReader reader = null;
StringBuilder builder = new StringBuilder();
try {
reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
for (String line; (line = reader.readLine()) != null; ) {
builder.append(line.trim());
}
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException logOrIgnore) {
logOrIgnore.printStackTrace();
}
}
}
String start = "<div class=\"post-text\"><p>";
String end = "</p>";
String part = builder.substring(builder.indexOf(start) + start.length());
String question = part.substring(0, part.indexOf(end));
TextView display = (TextView) findViewById(R.id.textDisplay);
display.setText(question);
}
}
Я получил эту ошибку:
'onCreate(Bundle)' in 'com.example.myproject.MainActivity' clashes with
'onCreate(Bundle)' in 'android.appcompat.app.AppCompatActivity';
overridden method does not throw 'java.lang.Exception'
Что бы вы предложили, чтобы справиться с этим, это умный способ получения данных с веб-сайта? Любая помощь высоко ценится
throws Exception
, добавьтеcatch
в блок try, вы не можете изменить объявление метода при переопределении. Кроме того, вы получите исключение, потому что вы пытаетесь выполнить сетевой вызов в основном потоке. Используйте библиотеку OkHttp. И да, не пытайтесь анализировать html вручную (у SO есть json API, афаик) - person Dima Rostopira   schedule 04.03.2020