java sample codes that access outer internet through proxy which require username and password use inner instead of extends is the most different 网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,主要问题就是出在对 Authenticator.setDefault的使用,以及base64编码的问题上代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。如果转载请注明代码出处。chimae@cnjsp.orgpackage 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(); }}
转:http://www.cnjsp.org