AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Hilfe mit IdHTTP - IOHandler value is not valid...
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe mit IdHTTP - IOHandler value is not valid...

Ein Thema von smartmod · begonnen am 11. Jul 2005 · letzter Beitrag vom 12. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
smartmod

Registriert seit: 11. Jul 2005
26 Beiträge
 
#1

Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 14:54
Hi,

ich versuche schon seit 3 Tagen eine PHP Seite über die Post Funktion von IndyHttp aufzurufen, bekomme aber ständig die Fehlermeldung "IOHandler value is not valid".

Bitte sagt mir, was ich falsch mache...

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  data: TIdMultiPartFormDataStream;
begin
  data := TIdMultiPartFormDataStream.Create;
  try
    { add the used parameters for the script }

{ Daten für UPS Login:}
{  data.AddFormField('sret', 'http://www.ups.com/content/de/de/index.jsx');
    data.AddFormField('uret', 'http://www.ups.com/content/de/de/index.jsx');
    data.AddFormField('userid', 'smartmod');
    data.AddFormField('password', 'xxxxxxx'); }


{ Daten für Dresnder Bank Login }
    data.AddFormField('identifier', '12345678');
    data.AddFormField('lqp', '123456');

{ Call the Post method of TIdHTTP and read the result into TMemo }
    Memo1.Lines.Text := IdHTTP1.Post('https://www1.dresdner-privat.de/servlet/P/SSA_MLS_PPP_INSECURE_P/pinLogin.do?', data);
  finally
    data.Free;
  end;
end;
Danke schonmal an alle!
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 16:22
sag uns mal ob du überhaupt einen IOHandler bei deinem IdHTTP registriert hast. davon sieht man nämlich hier nix.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 16:36
Hi smartmod,
du musst die Parameter in einer Stringlist mit folgendem Format übergeben:
Delphi-Quellcode:
SL.Add('deinersterparameter=deinersterwert');
SL.Add('deinzweiterparameter=deinzweiterwert');

memo1.lines.Add(idhttp1.post('deineDomain', SL)));
Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
smartmod

Registriert seit: 11. Jul 2005
26 Beiträge
 
#4

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 20:34
Zitat von DGL-luke:
sag uns mal ob du überhaupt einen IOHandler bei deinem IdHTTP registriert hast. davon sieht man nämlich hier nix.
Hallo!

Bin nicht so wirklich into Delphi... Wie kann ich das überprüfen/machen?
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 20:53
Zitat von smartmod:
Zitat von DGL-luke:
sag uns mal ob du überhaupt einen IOHandler bei deinem IdHTTP registriert hast. davon sieht man nämlich hier nix.
Hallo!

Bin nicht so wirklich into Delphi... Wie kann ich das überprüfen/machen?
wenn du auf mich hören würdest, wäre dein Problem schon gelöst
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
smartmod

Registriert seit: 11. Jul 2005
26 Beiträge
 
#6

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 20:56
Zitat von Chris1986:
Zitat von smartmod:
Zitat von DGL-luke:
sag uns mal ob du überhaupt einen IOHandler bei deinem IdHTTP registriert hast. davon sieht man nämlich hier nix.
Hallo!

Bin nicht so wirklich into Delphi... Wie kann ich das überprüfen/machen?
wenn du auf mich hören würdest, wäre dein Problem schon gelöst
Nope, leider nicht... Hab den Code zwischenzeitlich angepasst:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, ComCtrls, Menus, Grids, StdCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, IdMultipartFormData;

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    Panel1: TPanel;
    MainMenu1: TMainMenu;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    TabSheet4: TTabSheet;
    TabSheet5: TTabSheet;
    TabSheet6: TTabSheet;
    Image1: TImage;
    Datei1: TMenuItem;
    Bearbeiten1: TMenuItem;
    Bearbeiten2: TMenuItem;
    NeueBestellung1: TMenuItem;
    Datei2: TMenuItem;
    Beenden1: TMenuItem;
    ListBox1: TListBox;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Label3: TLabel;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Edit6: TEdit;
    Edit7: TEdit;
    Label8: TLabel;
    Edit8: TEdit;
    Label9: TLabel;
    Edit9: TEdit;
    Label10: TLabel;
    Edit10: TEdit;
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    Edit14: TEdit;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Edit15: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    Edit16: TEdit;
    Label18: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox3: TGroupBox;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    GroupBox4: TGroupBox;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Button9: TButton;
    Label24: TLabel;
    Label25: TLabel;
    Label26: TLabel;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Memo1: TMemo;
    IdHTTP1: TIdHTTP;
    Edit17: TEdit;
    Edit18: TEdit;
    procedure Label19Click(Sender: TObject);
    procedure Label18Click(Sender: TObject);
    procedure Label20Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Label19Click(Sender: TObject);
begin
  if Label19.Font.Color = clSilver then
    begin
    Label19.Font.Color := clGreen;
    end
  else
  begin
    Label19.Font.Color := clSilver;
  end;
end;

procedure TForm1.Label18Click(Sender: TObject);
begin
  if Label18.Font.Color = clSilver then
    begin
    Label18.Font.Color := clGreen;
    end
  else
  begin
    Label18.Font.Color := clSilver;
  end;
end;

procedure TForm1.Label20Click(Sender: TObject);
begin
  if Label20.Font.Color = clSilver then
    begin
    Label20.Font.Color := clGreen;
    end
  else
  begin
    Label20.Font.Color := clSilver;
  end;

end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  Form2.Show;
end;

procedure TForm1.Button8Click(Sender: TObject);
var
  data: TStringList;
begin
  data := TStringList.Create;
  try
    { add the used parameters for the script  }
    data.Add('sret=http://www.ups.com/content/de/de/index.jsx');
    data.Add('uret=http://www.ups.com/content/de/de/index.jsx');
    data.Add('userid=smartmod');
    data.Add('password=xxxxxxxx');
    {Call the Post method of TIdHTTP and read the result into TMemo}
    Memo1.Lines.Add(idhttp1.Post('https://wwwapps.ups.com/cclamp/login', data));
  finally
    data.Free;
  end;
end;

end.
(Hab mal alles gepostet zur besseren Übersicht)

... aber bekomme beim Click auf Button8 immer noch "IOHandler value is not valid!"

Danke für Eure Hilfe übrigens!

Edit: Ach ja, wenn ich das Ding über eine HTML Seite aufrufe (also einen Button mit Post Funktion mache) dann geht es ohne Probleme.
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 21:02
hm,
ersetz mal deine uses-Liste mit der hier:
Delphi-Quellcode:
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, ComCtrls, Menus, Grids, StdCtrls,
  IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP
edit: hab Mist geschrieben, kompilieren geht ja

edit2: konnte deinen Fehler gerade reproduzieren und probier jetzt mal ne Lösung zu finden Ich hab auch schon ne Vermutung, die Seite ist nämlich durch SSL geschützt
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
smartmod

Registriert seit: 11. Jul 2005
26 Beiträge
 
#8

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 21:10
Sowas schwebte mir auch vor - aber dann versteh ich nicht, wieso ein Browser das ohne weiteres machen kann... Aber ich überlass das mal grad dem Profi
  Mit Zitat antworten Zitat
Chris1986

Registriert seit: 17. Jul 2003
Ort: Aachen
350 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 21:35
So, bei mir funktionierts jetzt. Die Antwort stand sogar schon in der DP
Zitat:
1) Zunächst benötigt man Delphi 5.0 oder höher und
die Indy Komponenten der Version 9.x.
Außerdem die aktuellen OpenSSL Biblioteken für Indy,
erhältlich sind diese hier.
(DLLs ins Projekt-Verzeichnis kopieren)

2. Nachdem die beiden OpenSSL dll's in das Projekt-
verzeichnis kopiert wurden benötigt man ein SSL Zertifikat.
Im Internet Explorer im Menü Extras > Internet Optionen >
Inhalte wählt man dazu den Button Zertifikate und dort
Vertrauenswürdige Stammzertifierungsstellen. Hier
sucht man sich nun ein Class 3 Zertifikat (root authority) aus
und exportiert dieses Base-64-codiert in das Projektverzeichnis.

3. In Delphi erstellt man eine neue Anwendung und plaziert
dort aus dem Reiter Indy I/O Handlers die Komponente IdSSLIOHandlerSocket.
In den SSL-Optionen für diese Komponente wird unter CertFile das
zuvor exportierte Zertifikat ausgewählt. Zusätzlich werden
die Optionen VerifyDepth auf 2, Method auf sslvSSLv23 und
Mode auf sslmClient gesetzt.
Als nächstes plaziert man eine TIdHttp Komponente aus dem
Reiter Indy Clients auf der Form und ergänzt folgende Optionen:
Request.ContentType mit application/x-www-form-urlencoded
und IOHandler mit TIdServerIOHandlerSSL.
Zusätzlich musst du in der HTTP-Kompo "HandleRedirect" auf "true" stellen.

Die Prozedur in deinem Button bleibt unverändert. Jetzt sollte eigentlich alles funktionieren. Das Exportieren des Zertifikats kannst du dir übrigens sparen, bei mir funktionierts auch so.

Bei Bedarf häng ich meine Demo noch an.

Gruß
Christian
Es gibt nur 10 Typen von Menschen auf der Welt:
Die, die Binärcode verstehen und die, die es nicht tun . . .
  Mit Zitat antworten Zitat
smartmod

Registriert seit: 11. Jul 2005
26 Beiträge
 
#10

Re: Hilfe mit IdHTTP - IOHandler value is not valid...

  Alt 11. Jul 2005, 22:17
FUNKTIONIERT!

Dankeeeee!

Hmmm... Soll/darf ich Dich direkt weiternerven?

Ich schreib einfach mal...

Was ich im Endeffekt machen will, ist ein Programm, mit dem ich auf UPS Internet Shipping zugreifen kann, ohne mich einzuloggen und jedesmal die Adressdaten einzugeben.
Mein Ansatz war jetzt, die Klicks und Übergaben, die im Internetshipping stattfinden, alle über Delphi zu simulieren.

Das nächste Problem ist jetzt, dass mir die UPS Seite beim ersten Loginversuch ne Fehlermeldung gibt (wegen Cookies) und wenn ich dann den Button einfach nochmal drücke, bin ich eingeloggt.

Beim nächsten simulierten Klick, sagt er mir dann, dass mein Browser nicht unterstützt wird (versuche das aus dem Quellcode rauszulesen). So nu komm ich wieder nicht weiter.

Ziel des ganzen ist eine HTML Datei, die am Ende vom Shipping Vorgang immer angezeigt wird, automatisch zu öffnen und zu drucken. Diese enthält nämlich den Shipping Aufkleber.

Für einen Noob wie mich bedeutet das natürlich mehrere Jahre Arbeit

Viiiiiiieeeeeeeeeeeeeelen Dank schonmal!!!
  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 02:21 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