Problem mit URLConnection und HTTP-Multiformupload

  • Ich sitze im Moment an Code der einen Upload abbilden soll. Da das ganze bei mir im Großen nicht läuft, habe ich mir mal eine kleine Testumgebung aufgestellt mir der ich das machen kann.

    Das PHP-Skript auf der Server-Seite sieht so aus:

    Das funktioniert auch. Per HTML-Seite getestet.

    Doch der Java-Code will und will nicht laufen. Ich hab mir im Wireshark angeschaut wie der Request vom Browser aussieht und wie der vom Java-Code. Die Unterschiede sind marginal. Ich denke, dass es daran also nicht liegt. (Kann ich gerne noch posten, falls Bedarf besteht.)

    Beim Server kommen jedenfalls weder die FILE noch die POST Parameter an. Dementsprechend returniert dieser nur:
    error array(0) {} array(0) {}

    Das einzige was anders ist: Beim Request vom Java-Code stimmt die IP-Adresse nicht. In diesem SO-Post wird aber gemeint, dass sei egal.

    Es gibt nichts gutes, außer man tut es!
    - Erich Kästner

    Einmal editiert, zuletzt von Schlingel (17. Oktober 2012 um 16:19)

  • Geht es dir darum, herauszufinden, warum das nicht funktioniert, oder willst du einfach nur einen Dateiupload durchführen?

    Ich weiß zwar, dass das vielleicht nicht das ist, was du hören willst, aber für Java gibt's eine nette Library für HTTP-Requests.

    Einmal editiert, zuletzt von Paulchen (17. Oktober 2012 um 16:34) aus folgendem Grund: falscher Link

  • Ersteres.

    Die Bibliothek für die ich das schreibe wird auf Android eingesetzt und dort ist die URLConnection sehr viel schneller als der HTTPClient von Apache. Abgesehen davon, empfiehlt auch Google selbst die URLConnection zu verwenden.

    By the way, dein Link zeigt auf eine alte Version. Hier geht's zur aktuellen Seite.

    Es gibt nichts gutes, außer man tut es!
    - Erich Kästner

  • sieh dir mal die beispiele in rfc1867 an:

    - die boundary wird jeweils durch -- eingeleitet
    - im content-type selbst werden diese nicht angeführt

    so funktioniert es:

    PHP
    String bound = Long.toString(System.currentTimeMillis());
            String boundary = "--" + bound;
            // ...
            con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + bound);

    was rauskommt sieht dann so aus:

    wenn du mehr - möchtest, dann werden die einfach zum teil von 'bound':

    PHP
    String bound = "---------------------------" + Long.toString(System.currentTimeMillis());
            String boundary = "--" + bound;
            // ...
            con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + bound);

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😒😓😔😖😘😚😜😞😠😡😢😣😥😨😩😪😫😭😰😱😲😳😵😶😷

  • Das war's!

    Super! Weder auf java-forum.org noch auf Stackoverflow wusste jemand weiter. Ab jetzt komme ich mit den knackigen Problemen gleich hier her!

    Echt toll!

    Es gibt nichts gutes, außer man tut es!
    - Erich Kästner

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!