Autor Beitrag
MarkusReisser
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 28.08.08 13:18 
Hallo,

ich würde gerne ein Programm schreiben, welches Befehle, die ich vorher festlege, im Internet ausführt. Dies Befehle sollen so hier aussehen:

ausblenden Quelltext
1:
http://www.foo.bar/foo/network.php?ip=127.0.0.1?dns=127.0.0.1					

Das ist nur ein sinnlos ausgedachter Befehl, der aber das Prinzip zeigt... Wie kann ich das umsetzen? Ich habe noch nie mit HTTP Abfragen in Delphi gearbeitet und weiß daher leider nix...

Aber ich denke, dass das vllt ganz einfach zu lösen ginge.

Und dann wollte ich als zweites noch fragen, wie dann eine Antwort abfangen kann. z.B. habe ich den Befehl von oben ausgeführt und dann kommt als Antwort "All Done". Das würde ich dan gerne im Programm in ein Memo ausgeben. Die Ausgabe ist ja nicht das Problem, sondern eher das Abfangen vom HTTP.

Vielen Dank schonmal im Vorraus für Antworten :)

Mfg Markus

Moderiert von user profile iconNarses: Code-Tags hinzugefügt
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Do 28.08.08 14:03 
Schau dir mal Suche in: Delphi-Forum TIDHTTP von den Indys an. die Routine die du brauchst ist "Get".
MarkusReisser Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 29.08.08 00:50 
Hallo,

danke schonmal. Ich habe erstmal das Indy Zeug installiert. Hier im Forum war zwar ne Anleitung, aber ich das hat alles nicht so wirklich funktioniert, aber ich habe es nach gesundem Menschenverstand doch installieren können :)

So... Ich sage es jetzt einfach mal: Ich will mein eigenes Tool schreiben, dass Dinge für mich erledigt. Also gucken, ob Files existieren und halt Befehle ausführen und dann den Inhalt der Antwort mir ausgeben.

Ich habe bis jetzt das hier:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button2Click(Sender: TObject);
var
  uIndy: TIdHttp;
  tmpString: String;
begin
  uIndy := TIdHTTP.Create(Form1);
  uIndy.AllowCookies := False;
  uIndy.HandleRedirects := True;
  uIndy.HTTPOptions := [hoForceEncodeParams];
  uIndy.ProxyParams.BasicAuthentication := False;
  uIndy.Request.Accept := 'text/html, */*';
  uIndy.Request.BasicAuthentication := False;

  tmpString := uIndy.Get('http://127.0.0.1/foo/file.php');
  ShowMessage(tmpString);

  uIndy.Free;
end;

So... Ist die Datei vorhanden, dann zeigt er mir den Inhalt an... Das will ich aber nicht... Ich will in dem Falle, dass er mir nur sagt, ob die Datei da ist oder nicht. :) Wie kann ich das denn erreichen?

Gibt es sowas wie uInde.Post, womit ich meine Befehle ausführen kann? Also das im ersten Posting?

Und ich habe noch ein Problem: Wenn ich den Befehl von oben im Browser Firefox ausführe, (www.foo.bar/foo/netw...0.0.1?dns=127.0.0.1) dann würde in der Adresszeile im Browser nen &token=2faa62a7ddea1772ed1e07083182953b kommmen. Das brauche ich aber auch in meinem Programm für später... Wie kann ich das denn nach dem Aufruf des Befehls in eine variable speichern ?

Und weiterhin, wie kann ich etwas aus den ShowMessage(tmpString); filtern? Also ich will nur was bestimmtes angezeigt bekommen... Z.b den Ausdruck foo.bar und alles wasdahinter kommt.

Ich weiß, dass ist alles ganz schön viel und wirres Zeug. Tut mir leid.

Danke schonmal für die große Hilfe :):)

Mfg Markus

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 29.08.08 11:49 
Über HTTP kannst du eigentlich nicht prüfen, ob eine bestimmte Datei auf dem Server vorhanden ist. Aber im Normalfall wird ein 404-Header über das HTTP-Protokoll an den Client versendet, wenn die aufgerufene Datei nicht gefunden werden kann. Wenn ein solcher Header existiert, wird von den Indys eine Exception ausgelöst - und die kannst du abfangen. Wie sie genau heißt, weiß ich gerade nicht, aber du könntest es einfach mal ausprobieren, zum Beispiel diese Datei versuchen herunterzuladen: www.yogularm.de/dies...-bestimmt-nicht.html

Wenn du nicht die gesamte Datei herunterladen willst, kannst du IMHO auch nur den Kopfteil anfordern, du könntest mal danach suchen oder googlen.

user profile iconMarkusReisser hat folgendes geschrieben:
wie kann ich etwas aus den ShowMessage(tmpString); filtern? Also ich will nur was bestimmtes angezeigt bekommen... Z.b den Ausdruck foo.bar und alles wasdahinter kommt.

Hier ein paar Befehle, die dir dabei behilflich sein könnten, einfach mal in der Onine-Hilfe danach suchen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
Copy
Pos
Length
StringReplace