Hallo liebe Forumgemeinde.
Ich lese hier immer sehr gerne mit und habe auch schon viele Antworten auf meine Fragen hier gefunden (sehr oft von Thomas Darimont - du hast meinen vollen Respekt!), nur leider komme ich nun nicht weiter und alles bereits im Web gefundene hilft mir nicht weiter.
Das Problem: Ich will regelmäßig meine Backups auf einen One-Klick-Hoster (share-online.biz) hochladen. Dort gibt es zu dem Upload auch eine API. Demnach funktioniert der Upload über POST und ist in zwei Teile geteilt. Der erste Teil klappt prima:
Danach steht dann in den Variablen server und session:
server = dl51-1.share-online.biz/upv3.php
session = GW63P9DEC
Damit kommt man dann auch zum zweiten Teil, bei dem man über POST die anfrage an den Server sendet:
Ergibt dann folgende Ausgabe: Answer: *** EXCEPTION md5 not fetchable - 08-19-2010, 6:08 pm ***
Die datei existiert und leserechte sind ausreichend gesetzt. Ich weiß leider nicht mehr weiter wie ich 1. die POST-Parameter und 2. gleichzeitig die Datei hochladen kann.
Ich hoffe ich habe mich verständlich ausgedrückt und jemand kann mir helfen.
Danke schon mal
Ich lese hier immer sehr gerne mit und habe auch schon viele Antworten auf meine Fragen hier gefunden (sehr oft von Thomas Darimont - du hast meinen vollen Respekt!), nur leider komme ich nun nicht weiter und alles bereits im Web gefundene hilft mir nicht weiter.
Das Problem: Ich will regelmäßig meine Backups auf einen One-Klick-Hoster (share-online.biz) hochladen. Dort gibt es zu dem Upload auch eine API. Demnach funktioniert der Upload über POST und ist in zwei Teile geteilt. Der erste Teil klappt prima:
Java:
try {
//Parameter POST
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(user, "UTF-8") + "&" +
URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pass, "UTF-8");
//Send data
URL url = new URL("http://www.share-online.biz/upv3_session.php");
URLConnection conn = url.openConnection(); conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data); wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String temp = rd.readLine();
session = temp.split(";")[0];
server = "http://" + temp.split(";")[1];
wr.close();
rd.close();
} catch (MalformedURLException e) {
System.out.println("Share-Online-Session-URL falsch.");
} catch (UnsupportedEncodingException e) {
System.out.println("Kann username und password nicht encoden.");
} catch (IOException e) {
}
server = dl51-1.share-online.biz/upv3.php
session = GW63P9DEC
Damit kommt man dann auch zum zweiten Teil, bei dem man über POST die anfrage an den Server sendet:
Java:
try{
int groesse = (int) new File(folder + "/" + file).length();
String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(user, "UTF-8") + "&" +
URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(pass, "UTF-8") + "&" +
URLEncoder.encode("upload_session", "UTF-8") + "=" + URLEncoder.encode(session, "UTF-8") + "&" +
URLEncoder.encode("chunk_no", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8") + "&" +
URLEncoder.encode("chunk_number", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8") + "&" +
URLEncoder.encode("filesize", "UTF-8") + "=" + groesse + "&" +
URLEncoder.encode("fn", "UTF-8") + "=" + URLEncoder.encode(folder + "/" + file, "UTF-8") + "&" +
URLEncoder.encode("finalize", "UTF-8") + "=" + URLEncoder.encode("1", "UTF-8");
// Send data
URL url = new URL(server);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr1 = new OutputStreamWriter(conn.getOutputStream());
// schreibe die Parameter
wr1.write(data);
wr1.flush();
StringBuffer answer = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
answer.append(reader.readLine());
System.out.println("Answer: " + answer);
wr1.close();
reader.close();
int port = 80;
InetAddress addr = InetAddress.getByName(server.split("/")[2]);
Socket socket = new Socket(addr, port);
// File To Upload
File theFile = new File(folder + "/" + file);
DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(theFile)));
byte[] theData = new byte[(int) theFile.length( )];
fis.readFully(theData);
fis.close();
DataOutputStream raw = new DataOutputStream(socket.getOutputStream());
raw.write(theData);
raw.flush( );
BufferedReader rd = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
raw.close();
socket.close();
} catch (Exception e) { System.out.println(e.toString()); }
Die datei existiert und leserechte sind ausreichend gesetzt. Ich weiß leider nicht mehr weiter wie ich 1. die POST-Parameter und 2. gleichzeitig die Datei hochladen kann.
Ich hoffe ich habe mich verständlich ausgedrückt und jemand kann mir helfen.
Danke schon mal