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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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