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

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

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

}

转:http://www.cnjsp.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值