快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

网上也有一些文章但是大多数涉及带有授权验证的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();
    }

}



返回类别: 教程
上一教程: Java新手常犯的几种错误
下一教程: Eclipse+Tomcat集成开发servlet

您可以阅读与"java程序如何穿透带有密码验证的代理"相关的教程:
· 学习如何使 JAVA 应用程序启动更快以及占用更少的内存
· java自己做个每小时自动更新的代理服务器(proxy)列表
· 如何有效的保护JAVA程序
· 在JSP程序如何解决读取或向DB写入数据时的乱码问题
· 在JAVA应用程序中如何实现FTP的功能 (转)
    微笑服务 优质保证 索取样品