Warum eine java.net.ConnectException?

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
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:

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

Woran kann das liegen?

Beispiel:

Code:
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);
		}

	}

}
 
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.
 
Die Domain stimmt, ich hab den URL in nen Browser kopiert und die Datei wird abgerufen.

Hier der e.printStackTrace():

Code:
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

Code:
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?
 
wie lautet denn die domain dass wir es probieren können? connection refused heißt nunmal der server mag nicht ...
 
Die URL lautet:

Code:
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.
 
also wenn ich die url in dein programm oben einsetzte erhalte ich:
Code:
hoax@blackbox:~$ java Try

0
hoax@blackbox:~$
als ausgabe ...
 
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?
 
So jetzt läufts auch wunderbar über einen Proxy.
Hier der Code dazu:

Code:
SocketAddress addr = new InetSocketAddress("proxy", /*Portnummer*/); // Portnummer ersetzen
Proxy proxy = new Proxy(Proxy.Type.HTTP, addr);
			
HttpURLConnection huc = (HttpURLConnection)url.openConnection(proxy);
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben