HttpURLConnection.getOutputStream bricht ab mit IOException



  • Hi,

    Ich hab eine Klasse die mit HttpURLConnection und URL Daten an ein CGI Skript schickt. Nur irgendwie bricht es immer wenn ich den Outputstream von HttpURLConnection öffnen will mit einer IOException ab.

    Lasst den Code sprechen 🙂

    URL url = new URL("http://www....");
    		HttpURLConnection con = (HttpURLConnection)url.openConnection();
    		con.setRequestMethod("POST");
    		con.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    		con.connect();
    
    		(new java.io.PrintStream(con.getOutputStream())).print("var1=wert&var2=wert2");
    	}
    	catch (MalformedURLException mfexc) {System.out.println("Abgeschmiert: mfexc");}
    	catch (IOException ioexc) {System.out.println("Abgeschmiert: ioexc");}
    

    Naja, in der Zeile (new java.io.PrintStream(con.getOutputStream())).print("var1=wert&var2=wert2"); unterbricht das Pogramm sich mit einer IOException. Langer Rede kurzer Sinn, was hab ich übersehen?
    Danke



  • Ja, warum loggst du nicht den Stack Trace? Das kann doch Milliarden Ursachen haben, dass deine Firewall jammert, deine Internetverbindung abkackt, dein Programm falsch ist, kosmische Strahlen deine JVM beschädigt haben...

    (new java.io.PrintStream(con.getOutputStream())).print("var1=wert&var2=wert2");

    Und da sträuben sich mir die Haare zu Berge, wenn ich nen Stream sehe, der kein ByteArrayStream ist und nicht geclosed wird. Vielleicht ist das nicht mal ganz unschuldig daran, weil es selten gut ist, 9083674 offene Streams zu haben.



  • Das war nur die vereinfachte Variante, in wirklichkeit ist es schon geschlossen worden. Das mit dme ByteArray muss ich mal testen, aber theorethisch dürfte das in dem Fall glaub nix ändern... naja, ausprobieren



  • Nene, du sollst kein ByteArrayStream nehmen. Der ist nur ne Ausnahme, weil man ihn nicht schließen muss.
    Auf jeden Fall würden mehr Informationen nicht schaden...



  • Sorry das ich mich nicht mehr gemeldet hab, war beschäftigt.
    Also, es tut mitlerweile, ich weiss zwar immernoch nicht an was es genau lag aber auf jedne Fall war der Code ziemlich unschön, und mit einer saubereren Variante tut es.
    Das ist halt irgendwie der Nachteil von Java im Vergleich zu C(++), das C auch mit chaotischem Code tut, Java nicht wirklich. *Umsteiger bin*
    Mit einem Printwriter statt normalen Printstream hats getan.

    Danke für die Hilfe



  • Ka, ob das als Nachteil anzusehen ist, ich bin da eher anderer Meinung...


Anmelden zum Antworten