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:

Code java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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) {
            }
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:
Code java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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()); }
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