Einzelnen Beitrag anzeigen

Marvin666

Registriert seit: 18. Jan 2006
Ort: Sinzig
4 Beiträge
 
#1

POST-Ergebnis speichern / Datei herunterladen

  Alt 14. Feb 2006, 15:49
Hallo,
ich benötoge mal wieder euren Rat:

Das ganze sieht so aus (IST-Zustand):
Ich lade eine HTML-Datei, die ein ganz einfaches Formular enthält, dass aus zwei Textfeldern und einem Submit-Button besteht. Per POST werden die Parameter in den Textfeldern ("ID" und "Produkt") an eine https-URL geschickt.
Als Reaktion auf den POST öffnet sich das Dialogfenster "Zertifikat annehmen JA oder NEIN" und eine "Username/Passwort-Abfrage". Ist diese Hürde genommen, zeigt mein TWebBrowser die Grafik an, die ich bestellt habe.

Soll-Zustand:
Per Indy-Komponenten sollen an den Server die Parameter "Id" und "Produkt" gesendet werden. Die Antwort (hier: eine Grafik des Typs png) soll dann (automatisch) gespeichert werden.
Wichtig: Die nerfige Authentifizierungs-Abfrage soll nicht mehr auftauchen.

Problem:
Wie kann ich meine Parameter ("ID" und "Produkt") an eine https-URL senden und eine Antwort (also die o.g. Grafikdatei) speichern ?
Bisher habe ich es nur geschafft strings zu empfangen - das ging so:
Delphi-Quellcode:
function TForm1.SendPostData(Ahttp: TIdHTTP; const AtoURL: string): string;
  //AtoURL: An diese URL werden die Informationen gesendet
  //Result: HTML-Ergebnis (quasi Antwort des Scripts)
var
  aStream: TMemoryStream;
  Params: TStringStream;
begin
  aStream := TMemoryStream.create;
  Params := TStringStream.create('');
  AHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

  try
    //Stream mit Werten füllen
    Params.WriteString('TRANSAKTIONSKENNUNG=' + transaktionskennung + '&'); //hier sollen "ID" und "Produkt"
    Params.WriteString('INSTITUTION=' + institution); //eingelesen werden.

    AHTTP.Request.BasicAuthentication:=true;
    AHTTP.Request.Username:=MeinBenutzername;
    AHTTP.Request.Password:=MeinPasswort;

    try
      AHTTP.Post(AtoURL,Params,aStream);
    except
      on E: Exception do
        showmessage('Fehler bei der Übertragung: ' + E.Message);
    end;
    aStream.WriteBuffer(#0' ', 1);
    Result := PChar(aStream.Memory);
  except
    Result := 'Fehler!';
  end;
end;
  Mit Zitat antworten Zitat