| 站点地图 | 联系我
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | 书签 | ASP.Net书签 | 上善若水 厚德载物
 现在位置 :: 主页 >> 资料中心 >> ROOT / CODE / Java /
 

java程序如何穿透带有密码验证的代理

来源(中国JSP技术网站)

From: http://www.cnjsp.org/view.jsp?column=3&id=831

java程序如何穿透带有密码验证的代理

发布日期:2005-04-21 作者:独孤求胜 阅读人次:9061

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.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();
    }
}




整理发布:独孤求胜
摘自:中国JSP技术网站

Link: http://www.asm32.net/article_details.aspx?id=1227


浏览次数 584 发布时间 2006/6/26 9:57:45 从属分类 Java 【评论】【 】【打印】【关闭
 
| www.asm32.net | 2006版 | 资料中心 | linux | asm/asm32 | C/C++ | VC++ | java | 书签 | ASP.Net书签 | 京ICP备09029108号-1