Прежде всего, я новичок в Spring-boot. И я хочу отказаться от новостного сайта, чтобы сделать api отдыха. что я делаю, просто создаю маршрут, который отвечает за создание ответа json на последние новости после просмотра сайта новостей. это маршрут
@GetMapping("/latest")
public ArrayList<Result> scrap() {
String title = "";
Document doc;
Element body ;
ArrayList<Element> elements = new ArrayList<>() ;
ArrayList<Result> results = new ArrayList<>();
ArrayList<Element>li;
try {
doc = Jsoup.connect("https://timesofindia.indiatimes.com").get(); //error take place here
title = doc.title();
body = doc.body();
elements = body.getElementsByAttributeValue("data-vr-zone","latest");
System.out.println("Size "+elements.size());
li = elements.get(0).select("li > a");
System.out.println("WHole Data "+li.toString());
System.out.println(li.size());
int id = 0;
for(Element text : li ) {
id++;
String link = "";
if( text.attr("href") != "" && text.attr("title") != "" ) {
link = "https://timesofindia.indiatimes.com/" + text.attr("href") ;
results.add(new Result(id,text.attr("title"),link));
}
}
} catch (IOException e) {
e.printStackTrace();
}
return results;
}
, пожалуйста, кто-нибудь, помогите, как справиться с подобной ситуацией в java.
Поскольку Jsoup.connect().get()
делает запрос http
, поэтому основной поток его ставит в уникальном потоке для параллельного выполнения и выведите размер ArrayList = 0.
Вот вывод StackTrace:
2020-03-04T12: 18 : 34.410009 + 00: 00 heroku [router]: at = info method = GET path = "/ latest" host = morning-waters-01018.herokuapp.com request_id = 15a8fdba-e541-4aa2-a0df-34838b2e7e5f fwd = "47.30. 171.180 "dyno = web.1 connect = 0ms service = 177ms status = 500 bytes = 473 protocol = https 2020-03-04T12: 18: 34.399950 + 00: 00 app [web.1]: Размер 0 2020-03-04T12: 18: 34.402793 + 00: 00 app [web.1]: 2020-03-04 12: 18: 34.402 ОШИБКА 4 --- [io-17255-exe c -5] oa c. c. C. [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] вызвала исключение [Ошибка обработки запроса; вложенное исключение: java .lang.IndexOutOfBoundsException: индекс: 0, размер: 0] с root причина 2020-03-04T12: 18: 34.402794 + 00: 00 app [web.1]: 2020-03-04T12: 18: 34.402795 + 00: 00 приложение [web.1]: java .lang.IndexOutOfBoundsException: индекс: 0, размер: 0 2020-03-04T12: 18: 34.402796 + 00: 00 приложение [веб.1]: в java .util.ArrayList.rangeCheck (ArrayList. java: 657) ~ [na: 1.8.0_242-heroku] 2020-03-04T12: 18: 34.402797 + 00: 00 app [web.1]: at java .util.ArrayList.get (ArrayList. java: 433) ~ [na: 1.8.0_242-heroku]