Martin: Wenn POST-Formulardaten-Übergabe per URL nicht geht...

Wenn POST-Formulardaten-Übergabe per URL nicht geht (wie ja bereits mehrfach festgestellt und gepostet) dann muß mein Perl eben ein kleines tmp-HTML schreiben in dem die Forumlarfelder vorbelegt sind und dann (anstelle der URL mit GET-Daten) eben dieses pseudo-html an den LWP schicken, um eine Antwort vom gegenüberliegenden Server zu bekommen und dann auszuwerten.

Nur - wie starte ich dieses "Pseudoformular", da ja dann keiner im LWP dahockt und auf "<START>" drückt? Kann ich das eigentliche Abschicken-Feld
<input type="submit" value="START">
ersetzen durch
<input type="text" name="submit" value="START">
?

Geht das ganze überhaupt? Vielleicht fällt irgendeinem noch was ein, was zu beachten wäre, bevor ich fremde Server belästige? Achja: Erlaubnis läge vor, der EIgentümer möchte nur seine Formularfelder nur nicht meinetwegen per GET übergeben und anders auswerten...

Für jeden Tipp herzlichen Dank!

MArtin

  1. Hallo,

    Wenn POST-Formulardaten-Übergabe per URL nicht geht (wie ja bereits mehrfach festgestellt und gepostet) dann muß mein Perl eben ein kleines tmp-HTML schreiben in dem die Forumlarfelder vorbelegt sind und dann (anstelle der URL mit GET-Daten) eben dieses pseudo-html an den LWP schicken, um eine Antwort vom gegenüberliegenden Server zu bekommen und dann auszuwerten.

    Nein, das ist leider ziemlicher Quatsch. Dass du LWP verwenden musst, das hast du ja schon mitbekommen. Dann schau doch einfach mal in der Doku zu LWP::UserAgent nach folgendem: "$ua->post($url, %formref, Header => Value,...);"

    Das sollte dir weiterhelfen.

    Viele Grüße,

    Stefan

    1. Hallo,

      Nein, das ist leider ziemlicher Quatsch.

      Jo, das habe ich nicht anders erwartet ;-) aber wenn man was nicht weiß muß man fragen und manchmal sind die Fragen Quatsch...

      Dass du LWP verwenden musst, das hast du ja schon mitbekommen.

      Ja ein guter Befehl, nur leider für mich nicht mächtig genug, da man bei 50-60 Abfragen (bsonders, wenn ein paar timeouts dabei sind) minutenlang warten kann (und das macht heute keiner mehr). Deswegen habe ich den Befehl etwas aufbohren müssen (es werden vom Vaterprozess ca 20 Child-Prozesse (variable) gestartet, die via pipe mit dem daddy-Prozess kommunizieren. Jeder bekommt einen eigenen LWP-Job und gibt via pipe sein Ergebnis zurück, sollte irgendeiner der Söhne rumlungern, wird er sofort vom Vater mit einer neuen Aufgabe betraut... bis alle Jobs abgearbeitet sind und der Vater alle Söhne sauber wieder killt. Dem Vater steht dann in einem Array die kompletten Ergebnisse zur Verfügung.) So schaffe ich es mit 20 Söhnen 50 requests in ca 7-8 Sekunden abzuarbeiten. Kennst Du dazu Alternativen, oder wie würdest Du das machen?

      Dann schau doch einfach mal in der Doku zu LWP::UserAgent nach folgendem: "$ua->post($url, %formref, Header => Value,...);"

      Das sollte dir weiterhelfen.

      verbindlichen Dank, das wir mir helfen (schaue ich morgen gleich nach...)

      Viele Grüße,

      Re!

      MArtin

      1. Hallo,

        Ja ein guter Befehl, nur leider für mich nicht mächtig genug, da man bei 50-60 Abfragen (bsonders, wenn ein paar timeouts dabei sind) minutenlang warten kann (und das macht heute keiner mehr).

        Nun ja, zu erst einmal würde ich zu LWP::UserAgent eher Modul als Befehl sagen, das trifft es besser. Und ich glaube nicht, dass es für dich nicht mächtig genug ist. Wenn du zu lange warten musst, dann liegt das wohl eher daran, dass es zu mächtig ist für dein Vorhaben.

        Je nach dem, was du vor hast, kannst du auch auf LWP verzichten und dir die Sache selbst schreiben. Dann geht es vielleicht schneller. Wenn du von den Seiten die du via POST abfragen willst keine Fehler erwartest und auch keine andere Behandlung brauchst als die von 200 Status Codes, dann kannst du ja deinen POST Request selbst zusammenschustern und an den Server schicken.
        Das was der Server zurückliefert befreist du dann von jeglichen Headern und schon hast du deine HTML Seite.

        Ob sich der Aufwand allerdings lohnt, nachdem dein System mit den Childs gut klappt ist fraglich. Falls es dich interessiert, Informationen zum Client schreibne findest du z.B. in perlipc unter "TCP Clients with IO::Socket"

        Viele Grüße,

        Stefan

        1. Moin!

          ...LWP::UserAgent... Childs ... perlipc unter "TCP Clients with IO::Socket"...

          Hallo! Kann mir mal jemand sagen, wo in dieser Diskussion der Anfang ist? Und was das alles mit dem eingestellten Thema "PHP" zu tun hat? Ich hasse solche Insider-Diskussionen. Macht das doch im Zweifel per Mail - der bisher gepostete Text ist nämlich weit entfernt, selbsterklärend zu sein - und einen Hinweis auf eine vorhergehende Diskussion habe ich auch nicht so wirklich entdecken können. (Sollte das der Fall sein, würde ich aber natürlich spontan zurückfragen, warum das denn nicht im alten Thread beredet werden konnte. Man soll ja keine unnötigen, neuen Threads anfangen.)

          - Sven Rautenberg

          --
          Signatur oder nicht Signatur - das ist hier die Frage!
          1. Hallo! Kann mir mal jemand sagen, wo in dieser Diskussion der Anfang ist? ...

            Wo ist das PRoblem? ICh hatte eine Frage zur Abfrage eines fremden Servers. Meine Vorstellungen, wie ich das Problem umgehen kann, waren nicht so dolle. Dann hat mir jemand einen anderen (besseren) Weg gezeigt. Ich habe ihm mitgeteilt, was ich von dieser Lösung bereits kenne und er gab mir einen Tipp, wie ich weitersuchen kann.

            Also, noch klassischer kann eine Hilfestellung nicht sein! Und wenn Du den Anfang nicht findest, dann klicke mal oben auf "Self-HTML-Forum", da ist der Anfang!

            :-(

            Und was das alles mit dem eingestellten Thema "PHP" zu tun hat? Ich hasse solche Insider-Diskussionen. Macht das doch im Zweifel per Mail - der bisher gepostete Text ist nämlich weit entfernt, selbsterklärend zu sein - und einen Hinweis auf eine vorhergehende Diskussion habe ich auch nicht so wirklich entdecken können. (Sollte das der Fall sein, würde ich aber natürlich spontan zurückfragen, warum das denn nicht im alten Thread beredet werden konnte. Man soll ja keine unnötigen, neuen Threads anfangen.)

            - Sven Rautenberg

          2. Hallo Sven,

            Hallo! Kann mir mal jemand sagen, wo in dieser Diskussion der Anfang ist?

            Hier: [pref:t=45699&m=249304]

            Und was das alles mit dem eingestellten Thema "PHP" zu tun hat?

            Nix. Da hat Martin beim eröffnen des Threads wohl ausversehen das falsche ausgewählt. Ich hab nicht darauf geachtet und es nicht geändert.

            der bisher gepostete Text ist nämlich weit entfernt, selbsterklärend zu sein

            Wenn man sich mal den Thread vom Anfang an durchliest, dann finde ich ihn schon recht verständlich. Hätte ich Martin nicht verstanden, dann hätte ich ihm ja auch net geantwortet.

            Viele Grüße,

            Stefan

            --
            Lass dir das Tanzen NICHT verbieten
            http://petition-tanzverbot.de.vu
        2. Nun ja, zu erst einmal würde ich zu LWP::UserAgent eher Modul als Befehl sagen, das trifft es besser.

          Wenn man genau ist, hast Du recht. Ich meinte mit "Befehl" nur die allgemeine Beschreibung "als Programmierbefehl".

          Und ich glaube nicht, dass es für dich nicht mächtig genug ist. Wenn du zu lange warten musst, dann liegt das wohl eher daran, dass es zu mächtig ist für dein Vorhaben.

          Nein, ich meinte damit, daß ich nicht mehrere Abfragen parallel laufen lassen kann (zumindest habe ich es noch nicht endeckt) und weitere Abfragen somit vom Beenden der vorherigen Abfrage abhängig sind. Bei 50 Abfragen (und wenn jeder nur 2 Sekunden dauert), sind damit etwa 1,5 Minuten verbraten. Und wenn mehrere Timeouts kommen, dauerts noch länger. Mit "meinem Childs" kann ich (je nach Initialisierung) 10, 20 oder gar 100 Abfragen parallel laufen lassen (bis mir der Provider aufn Kopf steigt, weil jedes Child natürlich einen eigenen Prozess in der Prozesstabelle darstellt).

          Je nach dem, was du vor hast, kannst du auch auf LWP verzichten und dir die Sache selbst schreiben. Dann geht es vielleicht schneller.

          Schaus Dir an: http://www.ehandel.de und da laufts inzwischen ganz ordentlich...

          Wenn du von den Seiten die du via POST abfragen willst keine Fehler erwartest und auch keine andere Behandlung brauchst als die von 200 Status Codes, dann kannst du ja deinen POST Request selbst zusammenschustern und an den Server schicken.

          Mit Fehlern muß man immer rechnen und die Antwortseite wird ausgewertet (nach Inhalt).

          Falls es dich interessiert, Informationen zum Client schreibne findest du z.B. in perlipc unter "TCP Clients with IO::Socket"

          ok, schaue ich mir an. Ich danke Dir für die Hilfe!

          Viele Grüße,

          Re!

          MArtin

    2. $ua->post($url, %formref, Header => Value,...);

      Das sollte dir weiterhelfen.

      Großer Meister, ich habs verstanden! Ich danke Dir!!!