我面临着java6/8的奇怪行为.我尝试隧道通过需要基本用户身份验证的代理.通过标准的java Authenticator执行此操作.如果我尝试访问https url作为第一个url,则抛出异常:
java.io.IOException:无法通过代理进行隧道传输.代理返回"需要HTTP/1.1 407代理身份验证"
但是,如果我首先访问http URL,然后访问https URL,则https访问可以正常工作.
鉴于该代码:
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 {
/* Create a HttpURLConnection Object and set the properties */
URL u = new URL( url );
Proxy proxy = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( proxyHost, proxyPort ) ); …Run Code Online (Sandbox Code Playgroud)