Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTP / PHP -> Login und Rückgabewert auswerten (https://www.delphipraxis.net/70030-idhttp-php-login-und-rueckgabewert-auswerten.html)

PainInYourBrain 23. Mai 2006 20:25


IdHTTP / PHP -> Login und Rückgabewert auswerten
 
Hallo zusammen !

Installierte Versionen:
- Delphi: 6
- Indy: 9

Ich möchte mit Delphi (ambesten über die Indy / IdHTTP Komponente) Daten (einfachen Text) an ein PHP-Script auf einem Server senden.

Nun habe ich allerdings das Problem, dass ich erstmal sowas wie eine Anmeldung bei dem PHP-Script machen muss
und dabei sollte das Programm einen Rückgabewert vom PHP-Script auswerten (sowas wie login=true oder richtiges Passwort oder sowas)

Ich wollte das ganze gerne über IdHTTP.POST(...) regeln.
Da dachte ich mir, dass ich irgendwie das mit dem "response Stream" oder so benutzen könnte ... nur wie bekomm ich denn den Antwortstring da raus ?


... warscheinlich überseh ich wieder irgendwas ganz einfaches ^^ aber ich bekomm's einfach nich hin :(

hoffe es kann mir einer helfen ...
(Im Vorraus vielen Dank für's lesen)

Klaus01 24. Mai 2006 08:06

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
wenn ich das richtig sehe steht die Antwort in Source als TStrings oder TStream drin.

Wenn Du die Ausgabe in einem Memo anzeigen läßt kannst Du sehen, was Du zurück bekommst.
Dann kannst Du feststellen nach was Du suchen/filtern mußt um festzustellen
ob ein Login z.B. erfolgreich war oder fehlgeschlagen ist.

Ein Auszug aus der Hilfe:

Zitat:

procedure Post(URL: string; const Source: TStrings; const AResponseContent: TStream); overload;
procedure Post(URL: string; const Source: TStream; const AResponseContent: TStream); overload;

Parameters

URL: string

Location of the host or CGI application.

const Source: TStream

Object containing the request data.

const AResponseContent: TStream

Destination for response data.

Grüße
Klaus

PainInYourBrain 25. Mai 2006 14:14

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
und wie genau bekomm ich den Antwortstring aus dem Stream raus ?

(sorry hab noch nie vorher damit gearbeitet und schon ätzend lange bei Google gesucht)

bzw wie kann ich den Stream / ich glaub TMemoryStream in ein Memofeld oder String reinpacken ?? (Bei der Typenumwandlung scheitert's bei mir ...)

----------------------------------------
schonmal vielen Dank für die Hilfe !

Florian H 25. Mai 2006 14:21

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
idHTTP.Post(...) liefert doch als Rückgabewert einen String. Dieser String ist die Ausgabe des Servers, was der Webbrowser dann z.b. anzeigen würde.
Also reicht es, wenn dein Script z.B. "1" für okay und "0" für Fehler ausgibt (oder sonst welche Zahlencodes z.B. für "falsches Passwort" = 2 , "Account gesperrt" = 3 usw.
Dann reicht sowas:

Delphi-Quellcode:
var
  str_result : string;
begin
  str_result := idHTTP1.Post(...);
  if (str_result='1')
  begin
    showmessage('angemeldet');
  end else
  begin
    showmessage('Fehler!');
  end;
end;

PainInYourBrain 25. Mai 2006 14:31

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
Delphi-Quellcode:
str:= IdHTTP1.Post('...', ..., ...);
=> [FEHLER] ... : Inkompatible Typen: 'String' und 'procedure, untyped pointer or untyped parameter'

(Das hatte ich auch schon versucht, leider ohne Erfolg)

Klaus01 25. Mai 2006 15:01

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
So geht es nicht?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Params  : TStringList;
  url     : String;
begin
  url := 'http://jigsaw.w3.org/css-validator/validator?text=&usermedium=all';
  Params := TStringList.Create;
  try
    begin
      Params.Add('text=' + Memo1.Lines.Text);
      Memo2.Lines.Text := IdHTTP1.Post(url, Params);
    end;
  finally
    Params.Free;
  end;
end;
und Du bist Dir sicher Indy 9 zu haben?
Bei Indy 8 wurde die Methode Post noch anders verwendet.

Grüße
Klaus

SirThornberry 25. Mai 2006 15:06

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
wenn es unbedingt mit stream sein soll so kann man den Inhalt des Stream wiefolgt in einen String packen:
Delphi-Quellcode:
SetLength(DerString, DerStream.Size);
DerStream.Position := 0;
DerStream.Read(DerString[1], DerStream.Size);

PainInYourBrain 25. Mai 2006 15:47

Re: IdHTTP / PHP -> Login und Rückgabewert auswerten
 
Autsch, mein Fehler ... ja ich hab anscheinend Indy 8 drauf ...

Das was Klaus01 geschrieben hat geht nicht (war warscheinlich für Indy 9)
... aber is klar danke trotzdem !

--------

Das mit dem Stream umwandeln geht perfekt :)

Vielen Dank !! (Problem behoben)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 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