I came across the curious behavior of java6 / 8. I am trying to tunnel through a proxy server that requires basic user authentication. Doing this with a standard java authenticator. If I try to access the https URL as the first URL, an exception is thrown:
java.io.IOException: cannot tunnel through a proxy. Proxy returns "HTTP / 1.1 407 Proxy Authentication Required"
But if I get the http url first and then the https url, https access works fine.
Given this code:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.Authenticator; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.PasswordAuthentication; import java.net.Proxy; import java.net.URL; public class ProxyPass { public ProxyPass( String proxyHost, int proxyPort, final String userid, final String password, String url ) { try { URL u = new URL( url ); Proxy proxy = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( proxyHost, proxyPort ) ); HttpURLConnection uc = (HttpURLConnection) u.openConnection( proxy ); Authenticator.setDefault( new Authenticator() { @Override protected PasswordAuthentication getPasswordAuthentication() { if (getRequestorType().equals( RequestorType.PROXY )) { return new PasswordAuthentication( userid, password.toCharArray() ); } return super.getPasswordAuthentication(); } } ); uc.connect(); showContent( uc ); } catch (IOException e) { e.printStackTrace(); } } private void showContent( HttpURLConnection uc ) throws IOException { InputStream i = uc.getInputStream(); char c; InputStreamReader isr = new InputStreamReader( i ); BufferedReader br = new BufferedReader( isr ); String line; while ((line = br.readLine()) != null) { System.out.println( line ); } } public static void main( String[] args ) { String proxyhost = "proxyHost"; int proxyport = proxyPort; final String proxylogin = proxyUser; final String proxypass = proxyPass; String url = "http://www.google.de"; String surl = "https://www.google.de";
Any suggestions, ideas?
source share