5

Sto cercando di ottenere il contenuto di un URL tramite un proxy autenticato. Questo è il codice che sto cercando di utilizzare:L'autenticazione proxy HttpUrlConnection entra nel ciclo di reindirizzamento

 Authenticator authenticator = new Authenticator() { 
      public PasswordAuthentication getPasswordAuthentication() { 
       System.out.println("authenticating"); 
       return (new PasswordAuthentication("username", "password".toCharArray())); 
      } 
     }; 
     Authenticator.setDefault(authenticator); 
     URL url = new URL("http://www.google.com"); 
     InetSocketAddress proxyAddress = new InetSocketAddress("address.of.proxy", 6060); 
     Proxy proxy = new Proxy(Proxy.Type.HTTP, proxyAddress); 
     HttpURLConnection uc = (HttpURLConnection) url.openConnection(proxy); 
     uc.connect(); 
     System.out.println(uc.getResponseCode()); 

Per qualche ragione, l'autenticazione entra in un loop di reindirizzamento, quindi il risultato è la stampa autenticatore "autenticazione" 20 volte, poi un ProtocolException

java.net.ProtocolException: Server redirected too many times (20) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1846) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439) 
at java.net.URLConnection.getContent(URLConnection.java:739) 
at proxytest.RunThis.main(RunThis.java:29) 

Il proxy sta funzionando con le credenziali indicate, l'ho provato tramite browser. Sto cercando di farlo funzionare per giorni, ho provato a impostare le proprietà del sistema, l'httpclient di apache e tutto quello che potrei ottenere da google. Qualche idea apprezzata. :)

UPDATE:

ho provato con WireShark, i dettagli di autenticazione del proxy sono nella richiesta, ma il proxy getta indietro di un errore 407. Ancora una volta, le credenziali sono OK, funziona perfettamente dal browser (in realtà le ho copiate dal codice sorgente per essere sicuro).

C'è una cosa che ho notato però. Il valore dell'intestazione Autorizzazione proxy differisce in un solo carattere tra il browser e la richiesta inviata da java. Può significare qualcosa?

+0

Sto avendo esattamente lo stesso problema ... hai una soluzione o qualche nuova idea? – Ben

+0

Inoltre: ho letto sull'utilizzo di un cookie-Hander, ma anche con un gestore di cookie predefinito abilitato 'CookieHandler.setDefault (nuovo CookieManager (null, CookiePolicy.ACCEPT_ALL));' ottengo lo stesso risultato ... – Ben

+0

@Koocka Hi , l'hai fatto funzionare? – Inoy

risposta