# Warum eine java.net.ConnectException?



## Guest (30. Okt 2008)

Hi Leute,

ich versuche mit Java den Quelltext einer Datei im Internet auszulesen.
Die Datei die ich nutze existiert (die im Beispiel nicht), aber wenn ich das Programm starte bekomme ich diese Ausgabe:


```
IOException
java.net.ConnectException: Connection refused: connect
```

Woran kann das liegen?

Beispiel:


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

public class Try {

	public static void main(String[] args) {
		try {
			URL url = new URL("http://www.meinedomain.de/check.php");
			
			HttpURLConnection huc = (HttpURLConnection)url.openConnection();
		    huc.setDoOutput(true);
		    
		    huc.setRequestMethod("POST");
		    System.out.println(huc.getOutputStream());
		    DataOutputStream out = new DataOutputStream(huc.getOutputStream());
		    
		    out.writeBytes("nickname=nickname");
		    out.writeBytes("&password=password");
		    out.flush();
		    
		    BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream()));
			
		    String s = null, result = "";
		    while((s = br.readLine()) != null) {
		       result += s;
		    }
		    System.out.println(result);
		    
    	} 
		catch(MalformedURLException e) {
			System.out.println("MalformedURLException");
    		System.out.println(e);
    	}
		catch(IOException e) {
			System.out.println("IOException");
			System.out.println(e);
		}

	}

}
```


----------



## HoaX (30. Okt 2008)

java.net.ConnectException: Connection refused: connect

bedeutet dass da kein webserver läuft bzw der keine verbindung annimmt, hast dich bei der domain evtl vertippt?

ansonsten solltest du dir angewöhnen noch e.printStackTrace() mit in die catch-blöcke zu packen, dann siehst du nämlich auch genau in welcher zeile der fehler aufgetreten ist.


----------



## Guest (30. Okt 2008)

Die Domain stimmt, ich hab den URL in nen Browser kopiert und die Datei wird abgerufen.

Hier der e.printStackTrace():


```
java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(Unknown Source)
	at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at sun.net.NetworkClient.doConnect(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.http.HttpClient.openServer(Unknown Source)
	at sun.net.www.http.HttpClient.<init>(Unknown Source)
	at sun.net.www.http.HttpClient.New(Unknown Source)
	at sun.net.www.http.HttpClient.New(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
	at Try.main(Try.java:15)
```

Das es an der Zeile


```
DataOutputStream out = new DataOutputStream(huc.getOutputStream());
```

liegt war mir schon klar, aber ich weiß nicht wo der Fehler ist.

Weiß jemand von euch woran das liegen kann?


----------



## HoaX (30. Okt 2008)

wie lautet denn die domain dass wir es probieren können? connection refused heißt nunmal der server mag nicht ...


----------



## Guest (30. Okt 2008)

Die URL lautet:


```
http://www.freshlifepages.de/collector/checkLogin.php
```

Das ganze ist eine PHP-Datei die Anhand der übergebenen POST-Daten in der Datenbank nach einem User sucht.
Wenn ein User mit dem mitgeschickten Nickname und Password existiert wird 1 in den Quelltext geschrieben, ansonsten 0.

Ich hoffe das hilft dir weiter.


----------



## HoaX (30. Okt 2008)

also wenn ich die url in dein programm oben einsetzte erhalte ich:

```
hoax@blackbox:~$ java Try

0
hoax@blackbox:~$
```
 als ausgabe ...


----------



## Guest (30. Okt 2008)

Gut in dem Fall ist es klar:
Es liegt am Proxy.

Ich muss wahrscheinlich einfach die url.openConnection(); über ein Proxy öffnen.
Kennt sich jemand von euch mit Proxys in Java aus?


----------



## Guest (30. Okt 2008)

So jetzt läufts auch wunderbar über einen Proxy.
Hier der Code dazu:


```
SocketAddress addr = new InetSocketAddress("proxy", /*Portnummer*/); // Portnummer ersetzen
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
			
HttpURLConnection huc = (HttpURLConnection)url.openConnection(proxy);
```


----------

