Как здесь исправить MalformedURLException?

Я хочу, чтобы программа распечатывала текст каждого URL-адреса

HtmlPage points = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/points_career.html");
String pointsPageContent=points.asText();

HtmlPage assists = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/assists_career.html");
String assistsPageContent=assists.asText();




final HtmlPage page1 = webClient.getPage(pointsPageContent);

final HtmlPage page2 = webClient.getPage(assistsPageContent);




if (input == "Points") {
    System.out.println(page1);

}

else if (input == "Assists") {
System.out.println(page2);
}

else {
    System.out.println("not a valid entry, please type either 'Points' or 'Assists' to see the stats for the corresponding category");
}

Я должен получить текст для каждого URL-адреса, но вместо этого он дает мне исключение MalformedURLException.

Пожалуйста, укажите название библиотеки, которую вы используете, в тегах или в вопросе. Кроме того, независимо от вашего исключения, вы не должны сравнивать строки с ==.

RealSkeptic 08.04.2019 15:48

Похоже, вы извлекаете страницу один раз, а затем извлекаете содержание страницы (т.е. HTML), как если бы это был URL-адрес. Вы уже извлекли обе страницы после первых нескольких строк кода — какими вы ожидаете быть page1 и page2?

Jon Skeet 08.04.2019 15:49

Трассировка стека исключения? Кроме того, pointsPageContent и AssistPageContent не являются URL-адресами.

BlackPearl 08.04.2019 15:53

Насколько я вижу, два предоставленных вами URL-адреса действительны, поэтому ни один из них не должен вызывать это исключение. Как уже упоминалось, вам нужно предоставить более подробную информацию: трассировка стека и строка, вызывающая проблему, были бы хорошим началом, используемая библиотека также поможет (я предполагаю, что вы используете HtmlUnit).

Lyndon Armitage 08.04.2019 16:01

Да, я использую HtmlUnit, и он говорит, что проблема связана со строкой, в которой есть page1.

sportsking1068 08.04.2019 16:07

@RealSkeptic Возможно, HtmlUnit, но не уверен в этом.

Filipe Manuel 08.04.2019 16:07

Исключение в потоке "main" java.net.MalformedURLException: нет протокола: Карьерные лидеры НХЛ и ВАЗ и рекорды по очкам | Hockey-Reference.com по адресу java.base/java.net.URL.<init>(URL.java:627) по адресу com.gargoylesoftware.htmlunit.util.UrlUtils.toUrlUnsafe(UrlU‌​tils.java:243) по адресу com. gargoylesoftware.htmlunit.WebClient.getPage(WebClient.ja‌​va:448) в SpringProject.main(SpringProject.java:56)

sportsking1068 08.04.2019 16:07

Как сказал @JonSkeet, эта ошибка возникает из-за того, что вы извлекаете содержимое страницы, как если бы это был URL-адрес.

Filipe Manuel 08.04.2019 16:09

@FilipeManuel, как мне это исправить, чтобы он не извлекался как URL-адрес?

sportsking1068 08.04.2019 16:15
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
9
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как сказал @JonSkeet, эта ошибка возникает из-за того, что вы извлекаете содержимое страницы, как если бы это был URL-адрес.

    try {
        HtmlPage points = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/points_career.html");
        String pointsPageContent = points.asText();

        HtmlPage assists = (HtmlPage) webClient.getPage("https://www.hockey-reference.com/leaders/assists_career.html");
        String assistsPageContent = assists.asText();

        if (input.equals("Points")) {
            System.out.println(pointsPageContent);

        } else if (input.equals("Assists")) {
            System.out.println(assistsPageContent);
        } else {
            System.out.println("not a valid entry, please type either 'Points' or 'Assists' to see the stats for the corresponding category");
        }
    } catch (IOException ex) {
        ex.printStackTrace(); // Capture and treat errors
    }

Просто сравните содержимое страницы с желаемым вводом.

Другие вопросы по теме