Comment utiliser HttpsURLConnection via proxy par setProperty?

Réseau environnement:

Client Https<=============>Serveur Proxy<==============>Serveur Https
192.168.17.11<-----extranet------>192.168.17.22
10.100.21.10<----intranet----->10.100.21.11

ps: Http Client sans passerelle par défaut, mais il peut envoyer une commande ping à 10.100.21.11

Description:

OS: Ubuntu 12.04 sur 3 hôtes
Client Https: mettre en oeuvre avec java(openjdk-6).Avoir une interface réseau.
Serveur Proxy: Apache2.2.Deux réseau interfaces.
Serveur Https: Tomcat6.Avoir une interface réseau.

- Je utiliser les deux méthodes pour mettre en œuvre httpsurlconnection par l'intermédiaire de proxy:
(Pour faciliter la je ne suis pas d'écrire à propos de ssl poignée de la fonction de vérification de la serverTrusted et hostnameVerifier question.Si besoin je mettrai à jour.)

1.La classe Proxy

InetSocketAddress proxyInet = new InetSocketAddress("10.100.21.11",80);
Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyInet);
URL httpsUrl = new URL("https://192.168.17.22:8443/test");
HttpsURLConnection httpsCon = (HttpsURLConnection) httpsUrl.openConnection(proxy);

httpsCon.setDoOutput(true);
httpsCon.setDoInput(true);
httpsCon.setRequestMethod("POST");
OutputStream out = httpsCon.getOutputStream();
OutputStreamWriter owriter = new OutputStreamWriter(out);

owriter.write("<request>test</request>");
owriter.flush();
owriter.close();
...

Cette méthode fonctionne et j'ai observé les paquets circulent également répondu à mes attentes.
HttpClient ---> ProxyServer ---> serveur http

Mais lorsque j'utilise la Propriété d'ensemble de la méthode:

2.setProperty

System.setProperty("http.proxySet", "true");
System.setProperty("http.proxyHost",10.100.21.11);
System.setProperty("http.proxyPort","80");

URL httpsUrl = new URL("https://192.168.17.22:8443/test");
HttpsURLConnection httpsCon = (HttpsURLConnection)httpsUrl.openConnection();

httpsCon.setDoOutput(true);
httpsCon.setDoInput(true);
httpsCon.setRequestMethod("POST");
OutputStream out = httpsCon.getOutputStream();
OutputStreamWriter owriter = new OutputStreamWriter(out);

owriter.write("<request>test</request>");
owriter.flush();
owriter.close();
...

J'ai eu un NoRouteToHostException: Network is unreachable.
Il me rend confus.Je n'ai pas vu tout les paquets entre le client http et serveur proxy.
Mais HttpClient pouvez envoyer une requête ping au serveur proxy(10.100.12.10 ping 10.100.21.11)

J'ai donc supprimer paramètre de proxy(sans l'utilisation d'un proxy):
Également obtenu NoRouteToHostException: Network is unreachable.
Je pensais que ce qui est raisonnable.Car il n'y a pas de route à l'extranet.

Je suppose que cela semble comme à setProperty méthode que la fonction interne de httpsUrlConnection permettra de vérifier cette url peut être accessible ou non.

Mais c'est bizarre. 1ère méthode peut être succès.

Avez une idée? Ou quels sont les différents entre la 1ère et la 2ème méthode?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Mise à jour

System.setProperty("https.proxyHost",10.100.21.11);
System.setProperty("https.proxyPort","80"); 

Il peut travailler et les paquets de flux sont corrects ce que j'attends.
Mais définir le protocole https.proxyPort=443 n'est pas réalisable pour moi

System.setProperty("https.proxyPort","443");

Il thorow une exception comme ci-dessous:

java.net.SocketException: Unexpected end of file from server 
at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:770)
....

Alors j'ai pensé Apache Proxy doivent également être modifié à la bonne configuration.

source d'informationauteur CJeremy