Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme beim FileUpload mit commons HttpClient

Empfohlene Antworten

Veröffentlicht

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?

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

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 :( ...

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

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.

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 ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.