# ProxySettings aus Internet Explorer lesen



## Garth (23. Jan 2006)

Hi,

das Thema Proxy wurde hier zwar schon oft angesprochen, aber für mein Problem habe ich leider nichts gefunden.
Also: Ich möchte, dass mein Java-Prog sich die Einstellungen des Internet Explorers (bzw. optimal: Die Einstellungen des Standard-Browsers) ausliest und dann dementsprechend eine Verbindung ins Internet herstellt.

Wie kann ich also die Browser-Settings auslesen, ohne spezifisch Registry-Keys etc. auszulesen? Geht das überhaupt?
Ich hatte ja gehofft dass in System.getProperties() schon etwas enthalten ist, leider wohl nicht...

Danke und Gruß,

Garth


----------



## meez (23. Jan 2006)

Garth hat gesagt.:
			
		

> ...ohne spezifisch Registry-Keys etc. auszulesen? Geht das überhaupt?...



Nein...


----------



## Garth (23. Jan 2006)

Okay, nur um das für mich mal festzuhalten:



Es gibt keinen Weg, mittels Java "Bordmitteln" die Browserkonfiguration auszulesen
Ich könnte nur die Registry auslesen wenn ich mittels JNI eine externe C-Klasse importiere

Ist das nicht tragisch? Ich meine, sollte so etwas nicht auch anders möglich sein?

Wie sieht das denn mit einem WebStart-Programm aus: Wenn ich meine Applikation per WebStart laufen lassen würde, müsste ich mir dann um meinen Proxy Sorgen machen?
Mit anderen Worten: Würde ich um die Einbindung einer externen C-Klasse herumkommen wenn das Programm per WebStart gestartet wird? Hier ist immerhin die Option "Proxy-Einstellungen des Browsers verwenden" vorhanden.

Danke und Gruß, Garth


----------



## Roar (23. Jan 2006)

Garth hat gesagt.:
			
		

> Ist das nicht tragisch? Ich meine, sollte so etwas nicht auch anders möglich sein?


wieso das denn :? wieso sollte es mit der standard java lib möglich sein einstellungen aus irgendwelchen anderen programmen auszulesen :?


----------



## Garth (23. Jan 2006)

Also, Proxysettings sind ja jetzt nichts aussergewöhnliches, ich würde behaupten, in jeder größeren Firma anzutreffen, da hätte ich erwartet, dass Java mir diese Settings in irgendeiner Form zur Verfügung stellt, zum Beispiel über die System.Properties o.ä.

Wie macht ihr das denn, wenn ihr Programme über einen Proxy mit der Aussenwelt kommunizieren lasst?
Fest eincodieren scheidet logischerweise aus, und ich weiß mit Sicherheit, dass nicht jeder Anwender seinen Proxy kennt!


----------



## AlArenal (23. Jan 2006)

Garth hat gesagt.:
			
		

> Also, Proxysettings sind ja jetzt nichts aussergewöhnliches, ich würde behaupten, in jeder größeren Firma anzutreffen, da hätte ich erwartet, dass Java mir diese Settings in irgendeiner Form zur Verfügung stellt, zum Beispiel über die System.Properties o.ä.



Warum sollte es? Proxy-Einstellungen gehören zur Netzwerkkonfiguration. Java greift auf diese konfigurierte Netzwerkverbindung zu und das wars. Warum sollte man sich aus Java heraus noch Proxy-Settings ziehen können (und das auf allen von Java unterstützten Plattformen)? Aus Sicht der Anwendung sind diese Einstellungen transparent und damit irrlelevant.



> Wie macht ihr das denn, wenn ihr Programme über einen Proxy mit der Aussenwelt kommunizieren lasst?



Ich kommuniziere mit dem Zielrechner und fertig. Was dazwischen hängt, interessiert mich nicht und ist aus Sicht der Anwendung auch egal.

Applets übernehmen übrigens die Proxy-Einstellungen des Browsers, WebStart-Anwendungen ebenso, wobei die auch nochmal (unter Windows) in der Systemsteuerung erreichbar sind.


----------



## Garth (23. Jan 2006)

Vielleicht reden wir aneinander vorbei, aber ich kann Dir versichern dass der Proxy keineswegs transparent für die Java-Anwendung ist, denn ich bekomme hier einen 407-Fehler (Authorization required).

Also muss ich zwangsläufig irgendwie den Proxy konfigurieren.


----------



## AlArenal (23. Jan 2006)

Garth hat gesagt.:
			
		

> Vielleicht reden wir aneinander vorbei, aber ich kann Dir versichern dass der Proxy keineswegs transparent für die Java-Anwendung ist, denn ich bekomme hier einen 407-Fehler (Authorization required).
> 
> Also muss ich zwangsläufig irgendwie den Proxy konfigurieren.



Jein 
Die Anfrage geht ja über deinen Proxy, den von dem kommt die Authentifizierungs-Anfrage. Wenn du Low-Level arbeitest (direkt über Sockets oder so nen Krims) dann bleibst du da gerne mal hängen. Besonders böse ist immer wieder Microsofts nicht standardgemäße Verballhornung von HTTP bei ihrer Implementierung des eigenen proprietären NTLM-Authentifizierungs-Protokolls.

Ganz einfache Lösung: 
Das Rad nicht selbst erfinden sondern HttpClient aus den Jakarta Commons benutzen, der macht den ganzen Driss nämlich intern selbst und man hat nichts mehr damit am Hut.


----------



## Bleiglanz (24. Jan 2006)

> Warum sollte es? Proxy-Einstellungen gehören zur Netzwerkkonfiguration. Java greift auf diese konfigurierte Netzwerkverbindung zu und das wars. Warum sollte man sich aus Java heraus noch Proxy-Settings ziehen können (und das auf allen von Java unterstützten Plattformen)? Aus Sicht der Anwendung sind diese Einstellungen transparent und damit irrlelevant.


Nein, das ist falsch ausgedrückt: Proxy-Settings haben NICHTS mit "der Netzwerkkonfiguration" zu tun

Proxy-Einstellungen gehören immer zu einer ANWENDUNG

z.B. kann man ohne Probleme 4 verschiedene HTTP Proxies verwenden

einen für IE, einen für FIREFOX, einen für OPERA, einen für eine gerade laufende Java-Anwendung

Weil das leider so ist dass die Anwender damit überfordert sind, kann man auch einen transparenten Proxy verwenden, so dass bei den Clients keine Konfiguration nötig ist (ist meisten besser, erfordert aber TCP/IP Eingriff am Gateway)

zum Problem: versuch einfach die hässliche Schrottlösung und schau ob du die Proxy-Settings vom IE aus der Registry auslesen kannst

alternativ bleibt dir nur die manuelle Konfiguration


----------

