Markus: HTTP::Useragent & multipart/form-data

Hallo Forum!

Hat jemand mal nen Tip, wie ich mit HTTP::UserAgent Binärdaten mitgeben kann?
Mein Ansatz ist Müll und perldoc gibt irgendwie auch nicht das her, was ich suche! Danke...

Soweit mein Ansatz, nur wird das Bild nicht übertragen. :-)

$browser = LWP::UserAgent->new;
$browser->agent("MeinBroser1.0");

open(DATA, "<2.jpg");
binmode (DATA);
@file = <DATA>;
close(DATA);

$browser->post($url,
 [
 name1=>'Markus',
 name2=>'M.',
 nick=>'Clark',
        blid=>'2.jpg', @file
 ]);

  1. Moin Moin!

    Hallo Forum!

    Hat jemand mal nen Tip, wie ich mit HTTP::UserAgent Binärdaten mitgeben kann?
    Mein Ansatz ist Müll und perldoc gibt irgendwie auch nicht das her, was ich suche! Danke...

    Soweit mein Ansatz, nur wird das Bild nicht übertragen. :-)

    Hier fehlt ein "use strict;", ein -w auf der Shebang-Zeile wäre auch nicht übel.

    $browser = LWP::UserAgent->new;
    $browser->agent("MeinBroser1.0");

    open(DATA, "<2.jpg");

    Du hast ein nobelpreisverdächtiges Betriebssystem, wenn es open garantiert fehlerfrei ausführt.

    binmode (DATA);
    @file = <DATA>;

    Du hast ein Array mit Fragmenten der Datei.

    close(DATA);

    $browser->post($url,
    [
    name1=>'Markus',
    name2=>'M.',
    nick=>'Clark',
            blid=>'2.jpg', @file

    Hier übergibst Du "blid", "2.jpg", sowie eine unbestimmte Anzahl von Dateifragmenten.

    ]);

    Ich bezweifle, das LWP::UserAgent das macht, was Du willst, wenn Du es ihm auf diese Art vermittelst.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Jo, hallo!

      Hier fehlt ein "use strict;", ein -w auf der Shebang-Zeile wäre auch nicht übel. - wie kannst Du das wissen, wenn Du das komplette Script nicht kennst? Und was hat das mit der Frage zu tun?

      Du hast ein nobelpreisverdächtiges Betriebssystem, wenn es open garantiert fehlerfrei ausführt.

      Und was hat das mit der Frage zu tun?

      binmode (DATA);
      @file = <DATA>;

      Du hast ein Array mit Fragmenten der Datei.

      OK, hätte dazuschreiben sollen, dass es egal ist wie ich die Datei einlese. hab halt schon einiges versucht.

      blid=>'2.jpg', @file

      Hier übergibst Du "blid", "2.jpg", sowie eine unbestimmte Anzahl von Dateifragmenten.

      Okay, da ist nun die Frage - selbst wenn ich die Dateifragmente nicht unbestimmt übergebe, landen sie im Nirvana, womit wir endlich bei der FRAGE angekommen wären. WARUM ist das so, bzw. WO landen die Daten?

      Ich bezweifle, das LWP::UserAgent das macht, was Du willst, wenn Du es ihm auf diese Art vermittelst.

      Ich bezweifle, dass so zynische Antworten wie Du sie hier gibst, auch nur irgendjemandem im Ansatz heflen!
      Danke!

      1. Moin Moin!

        Jo, hallo!

        Hier fehlt ein "use strict;", ein -w auf der Shebang-Zeile wäre auch nicht übel. - wie kannst Du das wissen, wenn Du das komplette Script nicht kennst?

        Dann ist der entscheidende Fehler, dass Du das Script nicht postest.

        Und was hat das mit der Frage zu tun?

        Das ist in der Doku des strict-Pragmas hinreichend erklärt.

        Du hast ein nobelpreisverdächtiges Betriebssystem, wenn es open garantiert fehlerfrei ausführt.
        Und was hat das mit der Frage zu tun?

        Einiges. Was passiert im folgenden Code, wenn open() fehlschlägt?

        binmode (DATA);
        @file = <DATA>;

        Du hast ein Array mit Fragmenten der Datei.
        OK, hätte dazuschreiben sollen, dass es egal ist wie ich die Datei einlese.

        Ist es hier nicht.

        hab halt schon einiges versucht.

        Zitat 231 paßt mal wieder wunderbar.

        blid=>'2.jpg', @file

        Hier übergibst Du "blid", "2.jpg", sowie eine unbestimmte Anzahl von Dateifragmenten.
        Okay, da ist nun die Frage - selbst wenn ich die Dateifragmente nicht unbestimmt übergebe, landen sie im Nirvana, womit wir endlich bei der FRAGE angekommen wären. WARUM ist das so, bzw. WO landen die Daten?

        Welche Parameter *ERWARTET* die post()-Methode der Klasse LWP::UserAgent? Die Dokumentation ist da recht ausführlich.

        Was übergibst Du an Parametern? Beachte, dass Arrays und Hashes in Parameterlisten in Listenelemente aufgeteilt werden; bei Arrays in die Liste der Elemente in der Array-Reihenfolge, bei Hashes abwechselnd Schlüssel und Werte in keiner garantierten Reihenfolge.

        Bist Du Dir sicher, dass Du die Parameter so übergeben willst, wie Du es tust?

        Ich bezweifle, das LWP::UserAgent das macht, was Du willst, wenn Du es ihm auf diese Art vermittelst.
        Ich bezweifle, dass so zynische Antworten wie Du sie hier gibst, auch nur irgendjemandem im Ansatz heflen!

        SelfHTML ist Hilfe zur Selbsthilfe. Wenn Du nicht mitdenken *WILLST*, kann ich Dir wirklich nicht helfen.

        Danke!

        Bitte.

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        1. Danke,
          warum nicht gleich der Hinweis auf die Doku? War doch übersichtlicher als perldoc LWP::...

          Allerdings äußert sich das Zielscript nun mit im Betreff genannter Fehlermeldung, die ich nicht einordnen kann. Ne Idee, was da passiert?

          Gruß, Markus

          1. Moin Moin!

            Danke,
            warum nicht gleich der Hinweis auf die Doku? War doch übersichtlicher als perldoc LWP::...

            Allerdings äußert sich das Zielscript nun mit im Betreff genannter Fehlermeldung, die ich nicht einordnen kann. Ne Idee, was da passiert?

            Jo. Was Du produzierst, sieht für den Empfänger nicht wie ein brauchbarer POST-Request aus. Das liegt vermutlich daran, dass Du die post()-Methode immer noch mit falschen Parametern aufrufst. Die wenigsten Methoden überprüfen ihre Parameter, das Übergeben passender Parameter ist der Verantwortungsbereich des aufrufenden Scripts. Garbage in, Garbage out. Poste den relevanten Teil des Codes per Copy-and-Paste, um Tippfehler beim Abschreiben auszuschließen.

            Alexander

            --
            Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
            1. Moin Moin!

              Danke,
              warum nicht gleich der Hinweis auf die Doku? War doch übersichtlicher als perldoc LWP::...

              Allerdings äußert sich das Zielscript nun mit im Betreff genannter Fehlermeldung, die ich nicht einordnen kann. Ne Idee, was da passiert?

              Jo. Was Du produzierst, sieht für den Empfänger nicht wie ein brauchbarer POST-Request aus. Das liegt vermutlich daran, dass Du die post()-Methode immer noch mit falschen Parametern aufrufst. Die wenigsten Methoden überprüfen ihre Parameter, das Übergeben passender Parameter ist der Verantwortungsbereich des aufrufenden Scripts. Garbage in, Garbage out. Poste den relevanten Teil des Codes per Copy-and-Paste, um Tippfehler beim Abschreiben auszuschließen.

              Alexander

              Ja, hast recht. hatte ein parameter vergessen anzugeben! Nun ist alles i.o.!

              Thanks!