An WebDAV einen "MKCOL" Befehl versenden

citizen_erased

Bekanntes Mitglied
hallo!

ich stehe vor einem ähnlichen Problem wie der benutzer in http://www.java-forum.org/netzwerkprogrammierung/57617-httpurlconnection-ueberschreiben.html

Java:
  URL url = new URL("http://www.javasoft.com");
  HttpURLConnection conn =  (HttpURLConnection) url.openConnection();
  conn.setRequestMethod("XXX");  // XXX kann sein: GET, PUT ,POST, DELETE, HEAD, TRACE oder OPTIONS
  
 OutputStream os = connection.getOutputStream();

in den webdav will ich dateien und verzeichnisse speichern. dateien zu versenden über einen stream geht soweit. hierzu wird "PUT" als request methode benutzt.

bei verzeichnissen/ collections ist das schon problematischer. GET kann ich nutzen, um zu prüfen, ob es das verzeichniss gibt (return-code im negativen fall 404). in diesem fall wäre MKCOL der zu benutzende befehl. leider ist das kein gültiger wert für die methode setRequestMethod
siehe:
HttpURLConnection (Java 2 Platform SE v1.4.2) wirft eine "ProtocolException"

kennt jemand eine lösung oder ein framework, um mit webdav zu kommunizieren? danke!
 

Foermchen82

Top Contributor
Nach nem Framework hab ich auch schon gesucht. jackRabbit hab ich gefunden, aber meistens fehlt die ClientSeite. Ist also unbrauchbar. Viele Frameworks wurden da nicht weiterentwickelt.
Ich habs auch mal aufgegeben, aber poste mir doch mal bitte deinen Code, wie du Dateien liest und schreibst. Das würd mir helfen
 

citizen_erased

Bekanntes Mitglied
datei in den webdav transportieren läuft prinzipiell wie folgt..

inputstream aus der datei umleiten in den outputstream der verbindung.
byte-weises kopieren des dateinhaltes...

Java:
public class Blabla {
	
	File file = null; // must be set

	public void run() {
	
		HttpURLConnection connection = createConnection();
		InputStream is = createInputStream(file);
		OutputStream os = createOutputStream(connection);
		
		// transfer file
		copy(is,os);
			
		// close streams
		is.close();
		os.close();
			
		// get responsecode
		int responseCode = connection.getResponseCode();
	}
	

	private HttpURLConnection createConnection() {
		String protocol = config.getProtocol();
		String host = config.getHost();
		int port = config.getPort();
		String method = config.getMethod(); // PUT
		
		// filename without directory
		String fileName = file.getName();
		
		HttpURLConnection connection = null;
		try {
			URL url = new URL(protocol, host, port, fileName);
			connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod(method);
			connection.setDoOutput(true);
		} 
		
		catch (Exception e) {
			//...
		}
		return connection;
	}
	
	
	private InputStream createInputStream(File file) {
		FileInputStream is = null;
		
		try {
			is = new FileInputStream(file);
		}
		catch (FileNotFoundException e) {
			// ...
		}
		return is;
	}
	
	
	private OutputStream createOutputStream(HttpURLConnection connection) {
		OutputStream os = null;
		
		try {
			os = connection.getOutputStream();
		} 
		catch (IOException e) {
			// ...
		}
		return os;
	}

	private void copy(InputStream in, OutputStream out) throws IOException {
		
		byte[] buffer = new byte[1024];
		while (true) {
			int bytesRead = in.read(buffer);
			if (bytesRead == -1) {
				break;
			}
			out.write(buffer, 0, bytesRead);
		}
	}
}
 

citizen_erased

Bekanntes Mitglied
Sardine scheint ja ganz vortrefflich zu sein. danke!

Java:
Sardine sardine = SardineFactory.begin("username", "password");
sardine.createDirectory("http://yourdavserver.com/adirectory/");
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S WebDAV Netzwerkprogrammierung 1
S webDAV-EinstiegsFrage Netzwerkprogrammierung 3
R webdav und java Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
P Was brauche ich alles / wo sollte ich einen Blick drauf werfen? Netzwerkprogrammierung 17
E Wie kann man einen einfachen E-Mail Server schreiben Netzwerkprogrammierung 2
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
Z Socket [Chatprogramm] Mehrere Clients an einen Server Netzwerkprogrammierung 10
N Einen Server als ausführbare Datei exportieren Netzwerkprogrammierung 15
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
I HTTP Grundlagen um einen Webserver zu erstellen Netzwerkprogrammierung 17
D Schreiben auf einen TCP/IP Socket Netzwerkprogrammierung 2
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
L Mit Java auf Forum einloggen und dann einen Threat erstellen Netzwerkprogrammierung 4
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
L mehrere Streams über einen Socket? Netzwerkprogrammierung 8
A Wichtig für einen Chat? Netzwerkprogrammierung 4
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
V PC der an einen Router angeschlossen ist aus dem... Netzwerkprogrammierung 13
V Einen Eintrag aus einer Zip Datei von einem Server laden Netzwerkprogrammierung 2
M Wie programmiere ich einen FTP - Server Netzwerkprogrammierung 2
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
U Einen HandlerThread, der mehrere Verbindungen verwaltet? Netzwerkprogrammierung 2
T Mit FTP verbinden, einen Ordner erstellen und Datei löschen Netzwerkprogrammierung 3
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
T file auf einen server laden Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben