Frage

Ich entwickle eine Schnittstelle zwischen einer alten Web-basierten Anwendung und einem anderen. Die alte webbasierte Anwendung funktioniert gut, aber es gibt keine jede API zu kommunizieren.

Es gibt jede programmatische Weise ein Web-Formular etwas zu sagen wie: diesen Wert auf diesem Feld eingeben, das eines in anderen und Form einreichen

UPDATE: ich für so etwas wie folgt aussehen:

WebAutomation w = new WebAutomation("http://apphost/report");
w.forms[0].input[3].value = 123;
w.forms[0].input[4].value = "hello";
Response r = w.forms[0].submit();
...
War es hilfreich?

Lösung

Trotz des Tages auf Ihrer Frage wird die Antwort sein werde hoch sprachspezifisch. Es wird auch breite Palette von Lösungen, je nachdem, wie komplex eine Lösung, die Sie bereit sind, zu implementieren und wie flexibel ein Ergebnis, das Sie suchen.

Auf der einen Seite kann man viel in sehr kurzer Zeit mit so etwas wie Python erreichen mechanize , aber auf der anderen Seite, kann man wirklich in den Eingeweiden bekommen und viel Kontrolle haben durch einen Browser ein COM-Objekt wie SHDocVw (nur für Windows, natürlich).

Oder, wie LoveMeSomeCode vorgeschlagen, können Sie wirklich Ihren Kopf gegen den Beton treffen und beginnen POST-Anfragen Schmieden, aber gut Glück, herauszufinden, was der Server erwartet, wenn ist dabei jede Front-End-Verarbeitung der Formulardaten.

EDIT:

Eine weitere Option, wenn Sie auf der Suche nach etwas, das Sie kommen schnell zu beschleunigen auf, ist ein AutoIt 's IE-Modul, das im Grunde eine programmatische Schnittstelle über eine Instanz von Internet Explorer bietet (alle seine COM in unten, natürlich). Denken Sie daran, dass dies wahrscheinlich die am wenigsten erträglich Option Sie wählen könnten. Ich habe dies persönlich in Anspruch genommen Proof-of-Concept-Suiten Automatisierung zu produzieren, die dann zu einer robusteren C # -Implementierung migriert wurden, wo ich die COM ruft mich behandelt.

Andere Tipps

Sie können, aber Sie müssen eine POST-Anforderung Mock-up. Die Felder (Textfelder, Optionsfelder, etc.) werden als Schlüssel-Wert-Paare zurück zu der Ressource übertragen. Sie benötigen eine Anfrage für diese Ressource machen (je nachdem, was man in der für die Formtag Zustellen Aktion verwendet wird) und setzen alle Ihre Feld Wert-Paare in einer POST-Nutzlast kein Antrag.  Hier ist ein gutes Programm, um zu sehen, welche Werte übertragen werden: http://www.httpwatch.com  Oder Sie verwenden Firebug, eine kostenlose Firefox-Erweiterung.

Das Perl-Modul WWW :: Mechanize ist genau das. Ihre Beispiel würde wie folgt aussehen:

use WWW::Mechanize;
my $agent = WWW::Mechanize->new;
$agent->get("http://apphost/report");
my $response = $agent->submit_form(
    with_fields => {
        field_1_name => 123,
        field_2_name => "hello",
    },
);

Es gibt auch eine Python-Port, und ich denke, ähnliche Bibliotheken existieren für viele andere Sprachen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top