Ich habe ein großes Problem mit einer INDY-Komponente:
-Entwicklungsumgebung: DELPHI7 mit INDY10
Ich habe die Aufgabe, eine Applikation zu entwickeln, die in der Lage ist,
sich über einen PROXY mit einem zentralen Server im Internet zu verbinden,
um erfaßte Raumklimadaten dort abzuliefern.
Als PROXies kommen in Frage:
- SOCKS
- ConnectThrougHTTP
Ich habe versucht, das Problem mit hiolfe der INDY-Komponenten zu lösen.
- Bei Socks gab es keine Probleme, alles Klappte fantastisch
- Bei ConnectThroughHTTP geht alles, sofern man mit einer anonymen Anmeldung
arbeitet
Sobald man beim Proxy jedoch Benutzernamen und Passwort verwendet,
lehnt jeder Proxy die Anmeldung mit der Bemerkung ab, daß Benutzername
oder Passwort falsch sind.
Ich habe mir eine separate estumgebung geschaffen (Free Proxy Controlcenter)
Hier die relevanten Quelltextabschnitte:
1) Konfiguration der TidConnectThroughHTT-Komponente:
//Configure the Connect-Trough-HTTP-Component
IdConnectThroughHttpProxy.Port:=StrToInt(TBxProxyP ort.Text);//<-PROXY-Port
IdConnectThroughHttpProxy.Host:=TBxProxyIP.Text; //<-Adresse d. PROXies
IdConnectThroughHttpProxy.Username:=TBxName.Text; //<-Benutzername
IdConnectThroughHttpProxy.Password:=TBxPasswort.Te xt;//<-Passwort
IdConnectThroughHttpProxy.IPVersion:=Id_IPv4;
IdConnectThroughHttpProxy.Enabled:=false;
2) Aktivierung der Variante "Conntect through HTTP" (im Gegensatz dur SOCKS-Variante)
try
if RBhttp.checked then begin
IdConnectThroughHttpProxy.Enabled:=true;
idhandler.TransparentProxy:=IdConnectThroughHttpPr oxy; //Assign the
//Connetct-Trough-HTTP-Component to the Handler
idhandler.TransparentProxy.Enabled:=true;
//idhandler.Open();
end;
except
on E:exception do begin
beep;
showMessage(e.message);
end;
end;
3) Verbindungsaubau der eigentlichen IP-Verbindung durch den PROXY hindurch zum eigentlichen Zielserver
idhandler.Host := TBxDmcIP.Text; //Eingabefeld für den Server
idhandler.Port := StrToInt(daisyport.text); //2000; //IdSocks.Port;
//
IdTCPClient.Host:=TBxDMCIP.Text;
IdTCPClient.IOHandler:=idhandler;
IdTCPClient.Port := StrToInt(daisyport.text); // Port des Zielservers
IdTCPClient.IPVersion:=Id_IPv4;
IdTCPClient.Connect(); //Verbindungsaufbau
Comment