FTP Über URLConnection

Status
Nicht offen für weitere Antworten.

DocFaust

Mitglied
Hallo zusammen,

ich versuche über eine URLConnection eine Datei über FTP zu schreiben:

Code:
		try
		{
			URL url = new URL("ftp://user:pwd@server/file.txt");
			FtpURLConnection con = new FtpURLConnection(url);
			con.setDoOutput(true);
			con.connect();

			OutputStream out = con.getOutputStream();
			out.write("I'm a TestFile\r\n".getBytes());
			out.close();
		}
		catch (MalformedURLException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

Dabei kommt folgende Exception :

Code:
java.net.ProtocolException: cannot write to a URLConnection if doOutput=false - call setDoOutput(true)
	at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:813)
	at sun.net.www.protocol.ftp.FtpURLConnection.getOutputStream(FtpURLConnection.java:464)
	at de.test.FTPDownload.writeURL(FTPDownload.java:40)
	at de.test.FTPDownload.main(FTPDownload.java:26)

Properties:
-DproxyHost=xyz
-DproxyPort=8080
sind gesetzt

Kann es sein, dass der Proxy das Schreiben verhindert und deshalb intern der doOutput umgesetzt wird?

Das Lesen einer Datei über diese Mimik funktioniert so.

Die hier öfter beschriebene
Code:
URLConnection con = url.openConnection()
OutputStream out = con.getOutputStream
funktioniert leider auch nicht

JDK = 1.6.0_06
BS = WIN XP
IDE = eclipse

Danke schonmal
CU
Doc
 

Wildcard

Top Contributor
Wie bist du überhaupt auf diese Idee gekommen?
Die Klassen aus den sun Packages gehen dich gar nichts an.
Wenn du was auf einen FTP laden willst, verwende einen FTP Client. Apache zB.
 
G

Gast

Gast
Intern nimmt er diese Klasse eh her. Und damit ich die doOutput aufrufen kann, BEVOR er connected.
Und wenn ich es - wie geschrieben - "normal" mit URL.openConnection() mache, kommt dieselbe Meldung.

Wenn ich einfach nur auf ein FTP laden wollte, würde ich das mit dem Client wahrscheinlich auch machen. Aber ich möchte automatisiert Daten synchronisieren, die auf einem FTP Server liegen und die mit einem anderen Programm bearbeitet werden

CU
Doc
 

Wildcard

Top Contributor
Intern nimmt er diese Klasse eh her.
In einer Impelemtierung. Auf einer VM sind unter Umständen gar keine sun.* Klassen enthalten, weil die VM von gnu, IBM, Lego,... ist.
Das ist keine öffentliche API und darf nicht verwendet werden.
Das was du machen möchtest, kannst du damit sowieso nicht machen. Dafür brauchst du einen FTP Client.
Nein, kein End-User Client, sondern eine Java Bibliothek natürlich :lol:
Schau dir den besagten Apache FTP Client an.
 

DocFaust

Mitglied
Ok, sehe ich ein. Das mit der FtpURLConnection ist nicht das Gelbe vom Ei.
Allerdings, dass es mit URLConnection gar nicht geht, stimmt nicht ganz, denn ohne Proxy habe ich die Geschichte inzwischen zum Laufen gebracht.
Vielleicht geht das auch nicht für jede VM, aber diese Implementierung ist ja auch nur dafür gedacht.

Folgende Geschichte funktioniert bei mir zuhause mit einem entfrnten FTP-Server.

Code:
		try
		{
			URL url = new URL("ftp://u:p@h/f");
			URLConnection con = url.openConnection();
			OutputStream out = con.getOutputStream();
			out.write("test".getBytes());
			out.close();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}

Natürlich kann ich damit nur Dateien lesen und schreiben und sonst nichts, aber mehr brauch ich auch nicht.

Diese Implementierung wurde btw. auch schon früher in diesem Forum angepriesen.

Danke für Deine Aufklärung
Doc
 

Wildcard

Top Contributor
DocFaust hat gesagt.:
Natürlich kann ich damit nur Dateien lesen und schreiben und sonst nichts, aber mehr brauch ich auch nicht.
Wenn dir das reicht, lass dich nicht abhalten. Die Standard Java Bibliothek unterstützt nur einen Minimalteil des FTP-Protokolls, deshalb verwendet man für FTP Zugriffe üblicherweise auch zusätzliche Bibliotheken.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Gruppenchat: Über HTTPS oder nicht? Netzwerkprogrammierung 5
S Socket Über UDP Objekte verschicken Netzwerkprogrammierung 9
X Über eine Socket-Verbindung Arrays übergeben Netzwerkprogrammierung 5
C Über welchen Netzwerkadapter kommt mein receive? Netzwerkprogrammierung 15
R Über Java anderen Gateway nutzen Netzwerkprogrammierung 10
DeviAn Über ein Linux Server ein Windows Server nach einer File fragen Netzwerkprogrammierung 6
O Über Socket Array versenden Netzwerkprogrammierung 5
N Über Socket an Linux-Server Kommandos absetzen? Netzwerkprogrammierung 4
M HTTP URLConnection + BufferedReader killt meine Umlaute Netzwerkprogrammierung 4
U URLConnection mit lg/pw Netzwerkprogrammierung 2
C Java NIO Urlconnection Filetransfer Netzwerkprogrammierung 14
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
nrg HTTP URLConnection immer neu öffnen? Netzwerkprogrammierung 6
B HTTP JSESSIONID in Http(s)URLConnection loswerden! Netzwerkprogrammierung 13
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
H URLConnection - Browseranfrage nachbauen Netzwerkprogrammierung 2
E Parameter einer URLConnection Netzwerkprogrammierung 12
A [URLConnection] Bilder hochladen - aber anders! Netzwerkprogrammierung 4
J URLConnection schließen ? Netzwerkprogrammierung 6
R URLConnection via Proxy mit Authentification Netzwerkprogrammierung 5
S URLConnection über Proxy Netzwerkprogrammierung 4
D URLConnection + getLastModified Netzwerkprogrammierung 13
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
meez Sockettimeout bei URLConnection Netzwerkprogrammierung 2
H Mail über URLConnection Netzwerkprogrammierung 8

Ähnliche Java Themen

Neue Themen


Oben