Java程序如何穿透帶有密碼驗(yàn)證的代理 網(wǎng)上也有一些文章但是大多數(shù)涉及帶有授權(quán)驗(yàn)證的proxy都有問(wèn)題,主要問(wèn)題就是出在對(duì)Authenticator.setDefault的使用,以及base64編碼的問(wèn)題上代碼是最沒(méi)有二義性的文檔,實(shí)現(xiàn)原理不再解釋,請(qǐng)看代碼去體會(huì)。 ackage org.chimae.net; 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.PasswordAuthentication; import java.net.URL; /** * @author chimae@cnjsp.org */ ublic class ProxyConnTest { ublic static void initProxy(String host, int port, final String username, final String password) { Authenticator.setDefault(new Authenticator() { rotected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, ew String(password).toCharArray()); } }); System.setProperty(\"http.proxyType\", \"4\"); System.setProperty(\"http.proxyPort\", Integer.toString(port)); System.setProperty(\"http.proxyHost\", host); System.setProperty(\"http.proxySet\", \"true\"); } ublic static void main(String[] args) throws IOException { String url = \"http://java./\"; String proxy = \"yourProxy\"; int port =8080; String username =\"username\"; String password =\"password\"; String curLine = \"\"; String content = \"\"; URL server = new URL(url); initProxy(proxy,port,username,password); HttpURLConnection connection = (HttpURLConnection)server.openConnection(); connection.connect(); InputStream is = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); while ((curLine = reader.readLine()) != null) { content += curLine; } System.out.println(\"content= \" + content); is.close(); } } |
|
來(lái)自: 昵稱2807 > 《Java or Jsp》