Zum Inhalt springen

Probleme beim FileUpload mit commons HttpClient


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich versuche gerade erfolglos eine Datei hoch zu laden...

HTML-Form:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Rufnummern (Kurzwahl- und Telefonbuch)</title>

</head>


<body class="d3">

<form name="import_form" method="post" action="http://192.168.123.8/telefonbuch_kurzwahl?im_file=kurzwahlen&actionNo=12" accept-charset="ISO-8859-1" enctype="multipart/form-data">

<input type="file" name="im_file" size="70">

<input type=submit>

</form>

</body>

</html>

Mein Java-Code (fast 1:1 aus der Doku übernommen) sieht wie folgt aus:
...

                httpost = new HttpPost(sURL+"/telefonbuch_kurzwahl?im_file=kurzwahlen&actionNo=12");


                FileBody bin = new FileBody(new File("d:/rufnummern.txt"),"text/plain");


                MultipartEntity mpentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);      

                mpentity.addPart("im_file", bin);

                httpost.setEntity(mpentity);


                System.out.println("executing request " + httpost.getRequestLine());

                System.out.println("DoPost");

                response = httpclient.execute(httpost);

                System.out.println("Done!");

                entity = response.getEntity();

                is = entity.getContent();


                System.out.println("----------------------------------------");

                System.out.println(response.getStatusLine());

                if (entity != null) {

                    System.out.println("CHK: "+convertStream2String(is));

                    System.out.println("Response content length: " + entity.getContentLength());

                    System.out.println("Chunked?: " + entity.isChunked());

                }

                if (entity != null) {

                    entity.consumeContent();

                } 

...

ich bekomme zwar als Status 200 OK... aber der "Upload" geht viel zu schnell und die Daten kommen auch nicht an. Der Zielserver meldet: "Fehler 12002: - falsche Boundary Key"

Was mache ich falsch?

Geschrieben

Zeig doch mal die Stelle, wo die Daten angenommen werden (Server), Deine zwei Codeausschnitte zeigen einmal ein Formular, mit dem man eine Datei hochladen kann, und einmal einen Codeausschnitt, in dem mit dem HTTPClient etwas hochgeladen wird. Oder habe ich was übersehen (ist ja noch früh ;) )?

Schöne Grüße,

Peter

Geschrieben
Zeig doch mal die Stelle, wo die Daten angenommen werden (Server)

Das kann ich nicht, weil es sich um den Webserver auf einer Telefonanlage handelt und der ist Closed-Source ;)

Deine zwei Codeausschnitte zeigen einmal ein Formular, mit dem man eine Datei hochladen kann, und einmal einen Codeausschnitt, in dem mit dem HTTPClient etwas hochgeladen wird.

Genauso ist es! Ich versuche mit dem HttpClient (Java-Code Ausschnitt) das Verhalten des HTML-Form (HTML-Code Ausschnitt) nachzubilden... leider liefert mit der HttpClient ein vollkommen anderes Ergebnis, wie das simple HTML-Form und genau das ist mein Problem.

Bis auf das Hochladen hab ich schon alle Aufgaben gelöst: Login, alte Rufnummern löschen, {hier müssten jetzt die neuen Rufnummern übertragen werden} und Logout. Ist also nur noch eine "Kleinigkeit", aber da komme ich momentan nicht weiter :( ...

Geschrieben

Ah ok, die Information, dass es mit dem Formular funktioniert, mit dem HTTPClient nicht, hat mir gefehlt.

Sorry, da kann ich Dir nicht weiterhelfen, da ich mit dem HTTPClient noch keinen Multipart-Request versandt habe.

Schöne Grüße,

Peter

Geschrieben

Hast du das HTML Formular auch selbst erstellt oder ist das etwas was die Telefonanlage mit ausliefert? Denn was ich mir Vorstellen kann ist das beim HTTP Request über den Browser eventuell noch zusätzliche Parameter mit übergeben werden oder Daten aus einem Cookie geladen werden. Diese müsstest du dann auch noch in deinen Request den du über Java versendest hinzufügen.

Du solltest mal beide Request's also den via Browser und den aus deinem Java Client mitschneiden und dann vergleichen. Solltest du mit eclipse als IDE arbeiten kannst du auch mal den TCP/IP Monitor dazwischen hängen da siehst du eventuell ob überhaupt Daten aus deinem Client versendet werden.

Geschrieben

Das formular ist eine vereinfachte Version dessen, was auf der Anlage liegt, aber es funktioniert. Ich habs getestet, damit kommt die Datei dort an, wo sie hin gehört ;)

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...