Search code examples
javaurlurlconnection

URLConnectionReader produces UnknownHostException


Thanks in advance for every input!

I'm getting a little familiar with how to read data from websites with Java and have tried to do this by reading data using a URLConnectionReader.

Unfortunately I get an UnknownHostException when I test the whole thing in a Java online compiler (https://www.jdoodle.com/online-java-compiler/).

Have I forgotten any imports? I proceeded according to a tutorial.

Code: (designed for online-java-compiler jdoodle):

import java.net.*;
import java.io.*;  

public class URLConnectionReader {
    
public static void main(String[] args)  
  {  
    String output  = getUrlContents("https://www.tradegate.de/orderbuch_umsaetze.php?isin=NO0010892359");  
    System.out.println(output);  
  }  
  
  private static String getUrlContents(String theUrl)  
  {  
    StringBuilder content = new StringBuilder();  

    try  
    {  
      URL url = new URL(theUrl); 
      URLConnection urlConnection = url.openConnection(); 
  
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));  
      String line;  
    
      while ((line = bufferedReader.readLine()) != null)  
      {  
        content.append(line + "\n");  
      }  
      bufferedReader.close();  
    }  
    catch(Exception e)  
    {  
      e.printStackTrace();  
    }  
    return content.toString();  
  }  
}  

Error message:

java.net.UnknownHostException: www.tradegate.de
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
    at java.base/java.net.Socket.connect(Socket.java:591)
    at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:285)
    at java.base/sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:173)
    at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:182)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
    at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
    at java.base/sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:265)
    at java.base/sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:372)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1187)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1081)
    at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1587)
    at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)
    at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)
    at URLConnectionReader.getUrlContents(URLConnectionReader.java:21)
    at URLConnectionReader.main(URLConnectionReader.java:8)

Solution

  • I separated the classes as follows and your code works without any exceptions=>

    class Mian:

    public class Mian {
    
    
    public static void main(String[] args) throws ClassNotFoundException {
    
        URLConnectionReader urlcr = new URLConnectionReader();
        String output = 
        urlcr.getUrlContents("https://www.tradegate.de/orderbuch_umsaetze.php? 
        isin=NO0010892359");
        System.out.println(output);
    
    }
    
    }
    

    and URLConnectionReader class:

    import java.net.*;
    import java.io.*;  
    
    public class URLConnectionReader {
     
    
        public String getUrlContents(String theUrl)  
        {  
             StringBuilder content = new StringBuilder();  
    
            try  
              {  
              URL url = new URL(theUrl); 
              URLConnection urlConnection = url.openConnection(); 
    
      BufferedReader bufferedReader = new BufferedReader(new 
      InputStreamReader(urlConnection.getInputStream()));  
      String line;  
    
      while ((line = bufferedReader.readLine()) != null)  
      {  
        content.append(line + "\n");  
      }  
      bufferedReader.close();  
    }  
    catch(Exception e)  
    {  
      e.printStackTrace();  
    }  
    return content.toString();  
     }  
     }