|
|
网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,
主要问题就是出在对 Authenticator.setDefault的使用,以及base64编码的问题上
代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。
如果转载请注明代码出处。
chimae@cnjsp.org
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();
? }
}
作者:
责任编辑:suiX
|
|