AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Indy + Website

Ein Thema von punnzall · begonnen am 6. Sep 2009 · letzter Beitrag vom 6. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
punnzall

Registriert seit: 6. Sep 2009
18 Beiträge
 
#1

Indy + Website

  Alt 6. Sep 2009, 11:04
Ich wollte fragen, wie ich mithilfe von indy mit einer homepage arbeiten kann,
zB dass das programm edit felder einer website ausfüllt und danach auf einen button klickt, ohne dass jetzt die website offen muss sein
und wie man das programm buttons auf einer website klicken lässt wenn diese nicht offen ist ?
danke im vorraus
mfg
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#2

Re: Indy + Website

  Alt 6. Sep 2009, 11:18
Zitat von punnzall:
Ich wollte fragen, wie ich mithilfe von indy mit einer homepage arbeiten kann,
zB dass das programm edit felder einer website ausfüllt und danach auf einen button klickt, ohne dass jetzt die website offen muss sein
und wie man das programm buttons auf einer website klicken lässt wenn diese nicht offen ist ?
danke im vorraus
mfg
Zuerst musst du dir den Quelltext der Seite anschauen. Du brauchst das Ziel und die Übertragungsmethode des Formulars <form action="" method=""> sowie die Namen bzw. IDs der Eingabefelder und Buttons. Der Rest ist dann einfach:
Delphi-Quellcode:
var
  http: TIdHTTP;
  s: String;
  Params: TStrings;
begin
  http := TIdHTTP.Create(nil);
  try
    //wenn die Übertragungsmethode GET ist:
    s := http.Get('http://seite.de/datei.php?feld1=bla&feld2=blubb');

    //wenn die Übertragungsmethode POST ist
    Params := TStringList.Create;
    try
      Params.add('feld1=bla');
      Params.Add('feld2=blubb');
      s := http.Post('http://seite.de/datei.php', Params);
    finally
      Params.free;
    end;
    
    ShowMessage(s); //Zeigt den Quellcode der Eregbnis- / Login- / oder sonstwas - Seite an
  finally
    http.free;
  end;
end;
  Mit Zitat antworten Zitat
punnzall

Registriert seit: 6. Sep 2009
18 Beiträge
 
#3

Re: Indy + Website

  Alt 6. Sep 2009, 11:29
Vielen Dank.
Was ist der unterschied der methoden get und post ?

Zitat:
http := TIdHTTP.Create(nil); ** wozu ist das gut ?
try
//wenn die Übertragungsmethode GET ist:
s := http.Get('http://seite.de/datei.php?feld1=bla&feld2=blubb');

//wenn die Übertragungsmethode POST ist

- ** Könntest du dies etwas genauer erklären ?
Params := TStringList.Create;
try
Params.add('feld1=bla');
Params.Add('feld2=blubb');
s := http.Post('http://seite.de/datei.php', Params);
finally
Params.free;
end;
- **

ShowMessage(s); //Zeigt den Quellcode der Eregbnis- / Login- / oder sonstwas - Seite an
finally
http.free;
end;
end;
hab mal den quellcode kommentiert.
versteh das noch nciht so richtig :S
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Indy + Website

  Alt 6. Sep 2009, 11:33
In der HTML-Seite steht drin was gemacht wird: Get oder Post steht da als method drin.

Der Unterschied liegt darin, dass Get-Parameter an die Url angehängt werden und Post-Parameter separat übertragen werden. Deshalb musst du die dann auch als String-Liste als zweiten Parameter übergeben.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#5

Re: Indy + Website

  Alt 6. Sep 2009, 11:42
Bei Get werden sämtliche Parameter (also Formularfelder) in der URL übertragen. z. B. http://www.deineseite.de/index.php?s...sch&seite=home
Die URL besteht also aus der Domain deineseite.de, der Datei index.php und 2 Parametern. Nach der Datei kommt ein Fragezeichen was sozusagen den Beginn der Parameter einleitet. Ein Parameter besteht immer aus einem Paar, wobei der erste Wert der Name des Parameters und der zweite gefolgt nach einem Gleichheitszeichen der Wert für den Parameter ist (Name: sprache | Wert Deutsch). Wenn du mehrere Parameter übergeben willst werden diese mit einem kaufmännischen UND verbunden. Insgesamt könnte es dann so aussehen: ?sprache=deutsch&seite=home

Bei POST werden die Parameter ebenfalls so gegliedert, jedoch nicht per URL sondern mit der Anforderung an den Server (Request) versendet.

Zum Code:

Delphi-Quellcode:
var
  http: TIdHTTP;
  s: String;
  Params: TStrings;
begin
  http := TIdHTTP.Create(nil); //erstellen des TIdHTTP-Objekts, du könntest auch die Komponente aufs Form ziehen und mit IdHTTP1 verwenden, du sparst dir dann sowohl Create als auch Free
  try
    ...
    ShowMessage(s); //Zeigt den Quellcode der Eregbnis- / Login- / oder sonstwas - Seite an
  finally
    http.free; //das IdHTTP-Objekt löschen um Arbeitsspeicher freizugeben
  end;
end;
Delphi-Quellcode:
    //wenn die Übertragungsmethode GET ist und dir die Namen der Eingabefelder bekannt sind kannst du die URL einfach zusammen setzen (siehe oben)
    s := http.Get('http://seite.de/datei.php?feld1=bla&feld2=blubb');

    //wenn die Übertragungsmethode POST ist benötigen wir erst ein Objekt vom Typ TStrings/TStringList um die Parameter zu setzen
    Params := TStringList.Create; //Objekt erstellen
    try
      Params.add('feld1=bla'); //erstes Parameterpaar hinzufügen
      Params.Add('feld2=blubb'); //2tes...
      s := http.Post('http://seite.de/datei.php', Params); //Der erste Parameter von .Post ist die aufzurufende Seite, der 2. übergibt unsere Parameterliste
    finally
      Params.free; //Speicher freigeben
    end;
  Mit Zitat antworten Zitat
punnzall

Registriert seit: 6. Sep 2009
18 Beiträge
 
#6

Re: Indy + Website

  Alt 6. Sep 2009, 11:52
Danke für diene mühe.
wenn ich nun einen button habe, der xyz heisst, und ich will dass er den button klickt, dann geht die seite weiter, und dann soll er button abc klicken,
wie sähe das etwa im code aus ?
gibt es einen trick um die namen der buttons schneller zu finden?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#7

Re: Indy + Website

  Alt 6. Sep 2009, 12:01
Zitat von punnzall:
Danke für diene mühe.
wenn ich nun einen button habe, der xyz heisst, und ich will dass er den button klickt, dann geht die seite weiter, und dann soll er button abc klicken,
wie sähe das etwa im code aus ?
gibt es einen trick um die namen der buttons schneller zu finden?
Wenn du Firefox hast, kannst du den Button markieren und nach einem Rechtsklick auf "Auswahl-Quelltext anzeigen" klicken. Ansonsten sind Erweiterungen wie Firebug (https://addons.mozilla.org/de/firefox/addon/1843) ganz nützlich.
  Mit Zitat antworten Zitat
punnzall

Registriert seit: 6. Sep 2009
18 Beiträge
 
#8

Re: Indy + Website

  Alt 6. Sep 2009, 12:04
danke .
könntest du mir eventuell noch auf meine andere frage antworten ?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Indy + Website

  Alt 6. Sep 2009, 12:08
Naja, nach dem Get/Post wurde die Seite doch aufgerufen, danach rufst du die nächste wieder mit Get/Post auf usw., ich verstehe gerade das Problem nicht ganz?
Ansonsten könnte es sein, dass dir vielleicht noch ein CookieManager oder so fehlt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#10

Re: Indy + Website

  Alt 6. Sep 2009, 12:26
Wie Sebastian schon sagte, brauchst du vermutlich noch einen CookieManager.

Delphi-Quellcode:
uses
  ..., IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

var
  http: TIdHTTP;
  cookies: TIdCookieManager;
begin
  http := TIdhttpCreate(nil);
  try
    cookies := TIDCookieManager.Create(nil);
    http.CookieManager := cookies;
  ...
 ...
end;
Ansonsten, zeig doch einfach mal was du schon hast, dann können wir dir bestimmt helfen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz