# java.net.ConnectException: Connection timed out



## Faiza (18. Nov 2010)

Hallo zusammen,


ich möchte URL auslesen, was ich mehr oder weniger geschafft habe. 


```
URL url = new URL(
					"http://www.gdi-rp-dienste.rlp.de/cgi-bin/mapserv4101?map=" +
					"/data/umn/behoerden/behoerden_wfs.map&SERVICE=WFS&REQUEST=GetFeature&typename=verwaltungen&VERSION=1.0.0.xml");
         InputStream input = url.openStream();         // throws an IOException
         dis = new DataInputStream(new BufferedInputStream(input));
         String readLine = dis.readLine();
```


allerdings kriege ich stets eine Fehlermeldung und zwar,

```
java.net.ConnectException: Connection timed out
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:352)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:214)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:201)
	at java.net.Socket.connect(Socket.java:530)
	at java.net.Socket.connect(Socket.java:480)
	at sun.net.NetworkClient.doConnect(NetworkClient.java:169)
	at sun.net.[url]www.http.HttpClient.openServer(HttpClient.java:406[/url])
	at sun.net.[url]www.http.HttpClient.openServer(HttpClient.java:541[/url])
	at sun.net.www.http.HttpClient.<init>(HttpClient.java:245)
	at sun.net.[url]www.http.HttpClient.New(HttpClient.java:318[/url])
	at sun.net.[url]www.http.HttpClient.New(HttpClient.java:335[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:783[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:724[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:649[/url])
	at sun.net.[url]www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:972[/url])
	at java.net.URL.openStream(URL.java:1009)
	at JavaGetUrl.main(JavaGetUrl.java:43)
```


dann will ich die ausgelesene daten in .dat datei schreiben, kann mir bitte jemand eine kleinen Gedankenanstoß geben???


----------



## nrg (18. Nov 2010)

wo bekommst du die Fehlermeldung? Also dein o.g. Code funktioniert. Allerdings würde ich

```
BufferedReader bisr = new BufferedReader(new InputStreamReader(input));
	 String readLine = bisr.readLine();
```

schreiben. Die readLine von DataInputStream ist deprecated und deshalb sollte ein BufferedReader mit einem InputStreamReader instanziiert werden, um readLine zu verwenden.

edit: tippfehler


----------



## Faiza (19. Nov 2010)

ich bekomme den Fehler nicht in eine bestimmte Zeile sondern Allgemein. 

Auch wenn ich die entsprechende Zeilen verändert habe, doofe Fehler :lol:

Kann es vielleicht an meine Version ( 1.7.0.v) liegen oder so was in der Art????


----------



## bygones (19. Nov 2010)

der link an sich funktioniert im browser ? die fehlermeldung ist ja recht eindeutig: innerhalb eines gewissen Zeitlimits reagiert die andere Seite nicht -> TimeOut

bist du hinter firewall ? brauchst du einen proxy ins netz ?

Ich bin mir nicht sicher ob ein einfaches lesen der URL bei einem cgi funktioniert. Möglich dass hier ein explizierter POST geschickt werden muss.... aber das ist spekulativ

edit... aeh von was Version 1.7.0 ?


----------



## Faiza (19. Nov 2010)

Fehlermeldung ist klar, aber irgendetwas erzeugt sie ja und ich weiß leider nicht was??? Ich benutzte Eclipse Version 1.7.0. Ich wollte wissen ob es an buildpath oder argumente oder sonst noch was liegt das es hier bei mir nicht funktioniert??? 


```
bist du hinter firewall ? brauchst du einen proxy ins netz ?
```

Es kann gut möglich sein dass ist hinter eine Firewall bin, aber was kann man dagegen machen??? Ich kann die nicht deaktivieren bzw. ich habe keine recht dafür.


```
explizierter POST
```




```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class test2 {

public static void main (String[] args) {

	   InputStream input = null;
	   String s;

      try {


         URL url  = new URL("http://www.gdi-rp-dienste.rlp.de/cgi-bin/mapserv4101?map=" +
					"/data/umn/behoerden/behoerden_wfs.map&SERVICE=WFS&REQUEST=GetFeature&typename=verwaltungen&VERSION=1.0.0.xml");
         input = url.openStream();         // throws an IOException
         BufferedReader bisr = new BufferedReader(new InputStreamReader(input));
         String readLine = bisr.readLine();
		while ((s = readLine) != null) {
            System.out.println(s);
         }

      } catch (MalformedURLException mue) {

         System.out.println("Ouch - a MalformedURLException happened.");
         mue.printStackTrace();
         System.exit(1);

      } catch (IOException ioe) {

         System.out.println("Oops- an IOException happened.");
         ioe.printStackTrace();
         System.exit(1);

      } finally {
    	  
    	  //Closing the InputStream  

         try {
            input.close();
         } catch (IOException ioe) {
         }
      } 
   }  
}
```


----------



## bygones (19. Nov 2010)

java erzeugt die fehlermeldung. Es versucht an die URL zu kommen, aber etwas hinter es dran.

Wenn du hinter einer Firewall hockst gibts 2 Möglichkeiten

a) du darfst nicht nach draussen... dann hast du keine Chance
b) du musst einen Proxy setzen -> Connect through a Proxy - Real's Java How-to

und wie gesagt einfach einen URL abfragen die über parameter bestimmtes Verhalten serverseitig auslöst wird afaik nicht klappen. Das ist komplexer... Reading from and Writing to a URLConnection / http://www.java-forum.org/netzwerkprogrammierung/80572-post-request-httpconnection.html


----------



## Faiza (19. Nov 2010)

Vielen vielen Danke, das hilft mir erst mal weiter, ich melde mich wieder wenn ich eine Lösung oder Problem haben ;-)


----------



## Faiza (20. Nov 2010)

Hallöchen,

da bin ich wieder ich habe das problem mit ConnectException behoben. Dafür habe ich den nächsten.
Ich würde gerne das was auf meine Console erscheint in eine .dat datei schreiben, dies habe ich auch versucht, allerdings bin ich nicht so erfolgreich ;(
Kann jemand bitte auf meine dummen Fehler drüber schauen??? 



```
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class TestXmlReader {
	
	static Vector<Element> vec = new Vector<Element>();
	static Element fstElmnt;
	public static void main(String argv[]) {

		try {
			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory
					.newInstance();
			DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

			URL url = new URL(
					"http://www.gdi-rp-dienste.rlp.de/cgi-bin/mapserv4101?map=" +
					"/data/umn/behoerden/behoerden_wfs.map&SERVICE=WFS&REQUEST=" +
					"GetFeature&typename=verwaltungen&VERSION=1.0.0");
			InputStream stream = url.openStream();
			Document doc = docBuilder.parse(stream);

			// normalize text representation
			doc.getDocumentElement().normalize();
			System.out.println("Root element of the doc is "
					+ doc.getDocumentElement().getNodeName());
			
			NodeList nodeLst = doc
					.getElementsByTagName("gml:boundedBy");
			int totalPersons = nodeLst.getLength();
			System.out
					.println("Total no of gml:boundedBy : " + totalPersons);

			// Element
			for (int i = 0; i < nodeLst.getLength(); i++) {

				Node fstNode = nodeLst.item(i);
				// Nodes
				if (fstNode.getNodeType() == Node.ELEMENT_NODE) {

					Element fstElmnt = (Element) fstNode;
					NodeList fstNmElmntLst = fstElmnt
							.getElementsByTagName("gml:coordinates");
					Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
					NodeList fstNm = fstNmElmnt.getChildNodes();
					System.out.println("gml:coordinates: "
							+ ((Node) fstNm.item(0)).getNodeValue());
					
			    
			    //Close the output stream
				}
				
				String dateiName = "BINGEO.DAT";
				FileOutputStream schreibeStrom = new FileOutputStream(dateiName);
				for (int r=0; r < ((CharSequence) fstElmnt).length(); r++){
					schreibeStrom.write((byte)((CharSequence) fstElmnt).charAt(r));
				}
				Element fstNmElmntLst = null;
				vec.add(fstNmElmntLst);
			 
			}// end of for loop 
		} catch (SAXParseException err) {
			System.out.println("** Parsing error" + ", line "
					+ err.getLineNumber() + ", uri " + err.getSystemId());
			System.out.println(" " + err.getMessage());
		} catch (SAXException e) {
			Exception x = e.getException();
			((x == null) ? e : x).printStackTrace();
		} catch (Throwable t) {
			t.printStackTrace();
		}
		// System.exit (0);
	}// end of main
}
```


----------



## nrg (23. Nov 2010)

schreibeStrom.close() ?


----------



## Faiza (24. Nov 2010)

so hier ist der funktionierender Code.



```
public class XMLReader {



	public static void main(String argv[]) {

		try {



			// erstelle das Document

			DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory

					.newInstance();

			DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();



			URL url = new URL(

					"http://www.gdi-rp-dienste.rlp.de/cgi-bin/mapserv4101?map="

							+ "/data/umn/behoerden/behoerden_wfs.map&SERVICE=WFS&REQUEST="

							+ "GetFeature&typename=verwaltungen&VERSION=1.0.0");



			BufferedReader in = new BufferedReader(new InputStreamReader(url

					.openStream()));

			



			InputStream stream = url.openStream();

			Document doc = docBuilder.parse(stream);



			// normaliziere

			doc.getDocumentElement().normalize();



			// gebe das Wurzelelement aus

			System.out.println("Root element of the doc is "

					+ doc.getDocumentElement().getNodeName());



			NodeList nodeLst = doc.getElementsByTagName("gml:boundedBy");

			int totalPersons = nodeLst.getLength();

			System.out.println("Total no of gml:boundedBy : " + totalPersons);



			// Element

			for (int i = 0; i < nodeLst.getLength(); i++) {



				Node fstNode = nodeLst.item(i);

				// Nodes

				if (fstNode.getNodeType() == Node.ELEMENT_NODE) {



					Element fstElmnt = (Element) fstNode;

					NodeList fstNmElmntLst = fstElmnt

							.getElementsByTagName("gml:coordinates");

					Element fstNmElmnt = (Element) fstNmElmntLst.item(0);

					NodeList fstNm = fstNmElmnt.getChildNodes();

					System.out.println("gml:coordinates: "

							+ ((Node) fstNm.item(0)).getNodeValue());

				}



			}// end of for loop

		} catch (Throwable t) {

			t.printStackTrace();

		}

	}// end of main

}
```


----------



## nasir (27. Nov 2010)

Faiza hat gesagt.:


> so hier ist der funktionierender Code.
> 
> 
> 
> ...



Da hat sich jemand die Mühe gemacht, seine Hausaufgaben aus Verteilte Anwendung von FH Frankfurt Online zu stellen. Wenn das der Boffo wüsste...


----------



## Faiza (27. Nov 2010)

Hallo Lieber Nasir,


ist es mittlerweile eine verbrechen nach eine Lösung in Internet zu suchen und eine TEIL lösung ins Netz zu stellen und das auch nach der abgabe Termin.... hmmmm ?????

Also wenn mit diesen Beispiel jemanden geholfen ist, dann freue ich mich, weil genau so wird mir hier auch weiter geholfen. 

Aber wenn du den Boffo gerne erzählen möchtest das ich eine Teillösung ins Netz nach der Abgabetermin rein gestellt habe, dann lass dich nicht aufhalten mein Freund. Scheinbar hast du seine Aufgabe weder richtig gelesen noch beantwort, sonst wüsstest du das mit diesen Teil sind nicht mal 5 punkte drin sind :lol:

Und ich hoffe das es keine Drohung war???


----------



## nasir (27. Nov 2010)

Nein nein, ganz und gar nicht. Weil das auch nur fast 50% der Lösung ist. Da fehlt noch ein Scheduling mit einem Task, was alle 24 Stunden um 20 Uhr abläuft und zusätzlich, die absolute Krönung, dass auch nur das Element "Oberlandesgericht Koblenz"  und weitere Elemente von Koblenz (Adresse, ID usw) in der Bingeo.dat gespeichert sein müssen.


----------



## Faiza (29. Nov 2010)

und jetzt :applaus: weil du die Aufgabe so schön erklärt hast.


----------

