從公司的私有云機房遷到公有云機房后,對外是五個公網IP隨機呈現(xiàn)中捆,購買的代理IP供應商只能綁定一個授權公網IP俭识,因此只能采取帳密方式。
針對http協(xié)議的請求通過:
proxyAuth = new String(Base64.encodeBase64(proxyUser + ":" + proxyPassword));
conn = (HttpURLConnection) url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(haip, port));
if (proxyAuth != null) conn.setRequestProperty("Proxy-Authorization", "Basic " + proxyAuth);
這種方式即可。
但是請求https時報錯:Proxy returns "HTTP/1.0 407 Proxy Authentication Required"漂羊,添加了ssl后依然有問題
proxyAuth = new String(Base64.encodeBase64(proxyUser + ":" + proxyPassword));
conn = (HttpsURLConnection) url.openConnection(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(haip, port));
if (proxyAuth != null) conn.setRequestProperty("Proxy-Authorization", "Basic " + proxyAuth);
SSLContext sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, new TrustManager[] {new TrustAnyTrustManager()}, new java.security.SecureRandom());
conn.setSSLSocketFactory(sslContext.getSocketFactory());
后來翻閱多方材料后發(fā)現(xiàn)以一下代碼方式可以實現(xiàn):
System.setProperty("jdk.http.auth.tunneling.disabledSchemes", "");
Authenticator.setDefault(
new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(authUser, authPassword.toCharArray());
}
}
);
謝謝~