PDA

Visualizza la versione completa : [JAVA] scrittura su server


bobix78
02-11-2004, 11:01
Non riesco ad effettuare una scrittura di un file su un server. Il codice che utilizzo il seguente:



URL u=new URL("user:pasw:ftp.serv.it/dir/file");
URLConnection uc=u.OpenConnection();
uc.setDoOutput(true);
uc.connect();
OutputStream o=uc.getOutputStream(); \\ riga che genera errore
o.write(buf,0,64); \\buf un array di byte
o.flush();
o.close();


L'errore che viene generato il seguente: PROTOCOL DOESN'T SUPPORT OUTPUT.

Qualcuno mi sa spiegare dove sto sbagliando?

nik600
02-11-2004, 16:07
ma sei sicuro che si possa fare una cosa di questo tipo?

l'errore ti dice che il portocollo utilizzato (TCP/ip servizio FTP) non supportatol l'output

bobix78
02-11-2004, 16:52
mi sai fare un esempio funzionante?

Mods
02-11-2004, 18:45
Nel esempio messo da te stai semplicemente inviando dei dati al server, mica scrivendo dei file.
Per scrivere un file in FTP devi usare i comandi del protocollo:

Example


//richiesta di scrittura file su ftp
o.write(new String("STOU nomeFile").getBytes());

bobix78
03-11-2004, 13:46
anche se come dici tu, in ogni caso l'errore viene generato prima, all'apertura della connessione

Mods
03-11-2004, 14:07
se togli la riga uc.setDoOutput(true); che errore ti d?

bobix78
03-11-2004, 16:57
Originariamente inviato da Mods
se togli la riga uc.setDoOutput(true); che errore ti d?

Non cambia niente, quel metodo pare che serva solo per il modo POST del protocollo http. Nessuno ha un esempio che usi HttpClient per poter scrivere un file su un server?

Mods
03-11-2004, 17:44
ma non puoi fare semplicemente un roba cos:



Socket s=new Socket("indirizzo FTP",21);
BufferedReader socketIn;
DataOutputStream socketOut;
socketIn=new BufferedReader(new InputStreamReader(s.getInputStream()));
socketOut = new DataOutputStream(s.getOutputStream());

socketOut.wirteBytes("COMANDO FTP"+"\r\n");
String risposta=socketIn.readLine();

Zero-2
03-11-2004, 17:59
Se non ricordo male la porta 21 usata solo per inviare e ricevere comandi , mentre per inviare e ricevere dati si usa la 22.

Ciauz
:ciauz:

Loading