sunfruit[请访问http://www.fruitres.cn]

--我相信JAVA能走得更远 QQ:316228067

[原创]通过HttpURLConnection如何使用代理服务器连接公网

    --sunfruit

    在openConnection之前加上
    Properties   prop   =   System.getProperties();
    System.getProperties().put("proxySet","true");
    // 设置http访问要使用的代理服务器的地址
    prop.setProperty("http.proxyHost","xxxxxxx");
    // 设置http访问要使用的代理服务器的端口
    prop.setProperty("http.proxyPort","xxxxx");
   
    然后并不像有的贴子说的那样添加
    prop.setProperty("http.proxyUser","xxxxxxxx");
    prop.setProperty("http.proxyPassword","xxxxx");
    添加这样的内容是不行的,而是将"username:password"进行base64编码,具体代码如下
    String authentication = "username:password";
    String encodedLogin = new BASE64Encoder().encode(authentication.getBytes());
    httpurlconnection.setRequestProperty("Proxy-Authorization", " Basic " + encodedLogin);
   
    注意BASE64Encoder().encode(authentication.getBytes());这里不能使用BASE64Encoder().encodeBuffer(authentication.getBytes())否则报错
    具体原因参考sun公布的JDK BUG , Bug ID:  4615330  http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4615330

posted on 2007-03-22 10:41 sunfruit 阅读(1772) 评论(0)  编辑  收藏 所属分类: JAVA SE & EE


只有注册用户登录后才能发表评论。


网站导航: