Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idhttp.connect und Proxy (https://www.delphipraxis.net/80814-idhttp-connect-und-proxy.html)

Blo 15. Nov 2006 19:04


idhttp.connect und Proxy
 
Habe folgendes Verständnisproblem:
Meine Anwendung kopiert manchmal eine Datei auf einen Webserver, oder lädt eine Datei vom Server herunter.
Zunächst hatte ich das über Ftp gelöst (Indy 9.0.18 / D5). Klappt alles. Einige Anwender hatten kein Ftp-Zugang also habe ich auch einen Upload bzw. Download über Http eingebaut. Klappt auch alles. Viele Prozeduren sind ja zueinander analog:
idFtp.Connect analog zu idHttp.Connect
idFtp.Connected analog zu idHttp.Connected
idFtp.WorkBegin analog zu idHttp.WorkBegin
usw.

Immer wenn ich etwas hoch- unter herunterladen will, habe ich vorher immer ein idHttp.Connect durchgeführt und anschließend idHttp.Post oder idHttp.Get, so fern der User das Http-Protokoll gewählt hat. Etwa so:
Delphi-Quellcode:
with IDHTTPOT do
  begin
    Host                  := My.Host;
    ReadTimeOut           := My.TimeOut;
  end;
if FHTPID.UseProxy then with IDHTTPOT.ProxyParams do
  begin
    ProxyServer           := My.ProxyHost;
    ProxyPassword         := My.ProxyPasswort;
    ProxyPort             := My.ProxyPort;
    ProxyUserName         := My.ProxyUsername;
  end;
try
  IDHTTPOT.Connect;
except
  MessageDlg('HTTP-Verbindung konnte nicht aufgebaut werden!',mtError,[mbOk],0);
end;
Wenn der Zugang über einen Prroxy erfolgen muss, habe ich die Proxy-Einstellungen hinterlegt (siehe oben).
Nur leider funktioniert dann (also im Proxy-Fall)
Delphi-Quellcode:
IDHTTPOT.Connect;
nicht mehr, wohl aber z.B. ein anschließendes IDHTTPOT.Post. Ich würde erwarten, dass beide Befehle
funktionieren oder keiner.
Kann mir das jemand erklären?

marabu 15. Nov 2006 19:15

Re: idhttp.connect und Proxy
 
Hallo,

wie wird denn der Proxy beim Kunden von anderen Web-Anwendungen (Browser) genutzt? Muss er konfiguriert werden oder ist es ein transparenter Proxy?

Grüße vom marabu

Blo 15. Nov 2006 20:06

Re: idhttp.connect und Proxy
 
Weis nicht genau was ein transparenter Proxy ist.
Habe folgendes gemacht:
Arbeite in einem Netzwerk mit T-DSL Router und Linux-Server auf dem Squid als Proxy arbeitet (IP: 192.168.0.2).
Um ins Internet muss man den Proxy aber nicht benutzen, er ist nicht verpflichtend, der Router hängt direkt im Netz.
Da ich aber ein Proxy-Testumgebung benötige, habe ich an meinen PC in den Netzwerkeinstellungen die feste IP: 192.168.0.26 und kein Default-Gateway eingestellt.
Ping nach "draussen" klappt nicht. Und in Firefox muss der Proxy angegeben werden, um nach "draussen" zu kommen.
Also habe ich mir gedacht: Auch eine Verbindung mit Hilfe der Indykomp. setzt die Angabe eines Proxys voraus, dass ich also meine Testumgebung habe, was sich ja im Prinzip auch beim Testen so gezeigt hat.

Habe gelesen, dass Http ein verbindungsloses Protokoll ist, dass nach jedem Post oder Get die Verbindung automatisch wieder unterbrochen wird. Warum gibt es dann überhaupt eine idHttp.Connect-Methode? Einfach mitvererbt worden?

Und warum klappt ein Post aber kein Connect, wenn ein Proxy notwendig ist?
Gruss

mkinzler 15. Nov 2006 20:12

Re: idhttp.connect und Proxy
 
Zitat:

Weis nicht genau was ein transparenter Proxy ist.
Einer den man nicht Einstellen muß, sondern der automatsich benutzt wird (Weiterleitung durch Router).

Zitat:

Und warum klappt ein Post aber kein Connect, wenn ein Proxy notwendig ist?
CONNECT ist beim squid standardmäßig verboten.

Blo 15. Nov 2006 20:24

Re: idhttp.connect und Proxy
 
Gut zu wissen. Kann man herausfinden, ob der jeweils eingesetzte Proxy ein connect erlaubt? Seh ich das richtig, dass man "eigentlich" bein Http Up- bzw. Download kein connect benötigt?
Gruss


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