Veröffentlicht 27. Mai 201015 j 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?
27. Mai 201015 j 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
27. Mai 201015 j 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 ...
27. Mai 201015 j 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
27. Mai 201015 j 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.
27. Mai 201015 j 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.