Java程序如何穿透带有密码验证的代理 网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,主要问题就是出在对Authenticator.setDefault的使用,以及base64编码的问题上代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。 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(); } } |
|
来自: 昵称2807 > 《Java or Jsp》