网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,主要问题就是出在对Authenticator.setDefault的使用,以及base64编码的问题上代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。如果转载请注明代码出处。
package 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 */ public class ProxyConnTest {
public static void initProxy(String host, int port, final String username, final String password) { Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, new 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\"); }
public static void main(String[] args) throws IOException { String url = \"http://java.sun.com/\"; 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(); }
} 作者:独孤求胜
没有相关教程
|