Читать URL на Java - PullRequest
       1

Читать URL на Java

0 голосов
/ 28 ноября 2018

Моя цель в этой программе - извлечь контент сайта и вывести его на консоль.Однако, исключение выдается каждый раз, когда я запускаю этот код.Мне интересно, что я делаю неправильно, и если кто-нибудь может указать мне в правильном направлении.Спасибо заранее!

public class twikiripper {


public static URL url;


    public static void main(String[] args) {
        BufferedReader br = null;

        try{
            URL url = new URL("http://www.google.com");
        }catch(MalformedURLException ex){}
        try {
            url.openConnection();
            br = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;

            StringBuilder sb = new StringBuilder();

            while ((line = br.readLine()) != null) {

                sb.append(line);
                sb.append(System.lineSeparator());
            }

            System.out.println(sb);



        }catch(Exception e){
            System.out.println("Exception: "+e.toString());
        }
    }

Мой код указан выше.Мне было интересно, почему я всегда выводить Exception: java.lang.NullPointerException?Я, кажется, всегда бросаю это исключение.Я думал, что все делаю правильно.

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

Ответы [ 4 ]

0 голосов
/ 28 ноября 2018
below code will fullfill your requirement --

package com.subham.testing;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class Test13 {

    public static URL url;

    public static void main(String[] args) {
        BufferedReader br = null;

        try {


          url = new URL("http://www.google.com");

        } catch (MalformedURLException ex) {

            System.out.println("came exception");
        }

        try {
            url.openConnection();
            br = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;

            StringBuilder sb = new StringBuilder();

            while ((line = br.readLine()) != null) {

                sb.append(line);
                sb.append(System.lineSeparator());
            }

            System.out.println(sb);

        } catch (Exception e) {
            System.out.println("Exception: " + e.toString());
        }

    }
}



You were creating new url object  in first try block so in second try block was getting null as it was just decleared but not initialized.
0 голосов
/ 28 ноября 2018

Причина исключения для нулевого указателя:

В вашем коде в url.openConnection(); переменная url является локальной, и ее область действия заканчивается в конце блока try.

Попробуйте это:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class twikiripper {


    public static URL url;


    public static void main(String[] args) {
        BufferedReader br = null;

        try{
            url = new URL("http://www.google.com"); // I have changed this line
        }catch(MalformedURLException ex){}
        try {
            url.openConnection();
            br = new BufferedReader(new InputStreamReader(url.openStream()));
            String line;

            StringBuilder sb = new StringBuilder();

            while ((line = br.readLine()) != null) {

                sb.append(line);
                sb.append(System.lineSeparator());
            }

            System.out.println(sb);



        }catch(Exception e){
            System.out.println("Exception: "+e.toString());
        }
    }
}
0 голосов
/ 28 ноября 2018

В первой попытке блока a локальная переменная скрывает поле url.У вас есть две разные переменные с одинаковым именем.Изменить URL url = новый URL ("http://www.google.com"); на url = новый URL (" http://www.google.com"); или следуйте ответу NiVeRs. - Эритрейский 8 минут назад

Исправить! Спасибо.

0 голосов
/ 28 ноября 2018

В вашем коде есть ненужный блок try-catch.Попробуйте это:

public static void main(String[] args) {
    BufferedReader br = null;
    try {
        URL url = new URL("http://www.google.com");
        url.openConnection();
        br = new BufferedReader(new InputStreamReader(url.openStream()));
        String line;

        StringBuilder sb = new StringBuilder();

        while ((line = br.readLine()) != null) {

            sb.append(line);
            sb.append(System.lineSeparator());
        }

        System.out.println(sb);



    }catch(Exception e){
        System.out.println("Exception: "+e.toString());
    }
}

А также убедитесь, что вы импортируете правильные классы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...