1. 有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是java使用代理连接到外网的一些方法, 希望对你的程序有用.
    方法一:使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理:
    /**
    *@paramargs
    */
    /**
    *@paramargs
    */
    public static void main(String[] args) {
    Properties prop = System.getProperties();
    // 设置http访问要使用的代理服务器的地址
    prop.setProperty("http.proxyHost", "192.168.0.254");
    // 设置http访问要使用的代理服务器的端口
    prop.setProperty("http.proxyPort", "8080");
    // 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
    prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");
    // 设置安全访问使用的代理服务器地址与端口
    // 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
    prop.setProperty("https.proxyHost", "192.168.0.254");
    prop.setProperty("https.proxyPort", "443");
    // 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
    prop.setProperty("ftp.proxyHost", "192.168.0.254");
    prop.setProperty("ftp.proxyPort", "2121");
    prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
    // socks代理服务器的地址与端口
    prop.setProperty("socksProxyHost", "192.168.0.254");
    prop.setProperty("socksProxyPort", "8000");
    // 设置登陆到代理服务器的用户名和密码
    Authenticator.setDefault(new MyAuthenticator("userName", "Password"));
    }
    static class MyAuthenticator extends Authenticator {
    private String user = "";
    private String password = "";
    public MyAuthenticator(String user, String password) {
    this.user = user;
    this.password = password;
    }
    protected PasswordAuthentication getPasswordAuthentication() {
    returnnew PasswordAuthentication(user, password.toCharArray());
    }
    }
    方法二:使用Proxy来对每个连接实现代理, 这种方法只能在jdk 1.5以上的版本使用(包含jdk1.5), 优点是可以单独的设置每个连接的代理, 缺点是设置比较麻烦:
    public static void main(String[] args) {
    try {
    URL url = new URL("http://www.baidu.com");
    // 创建代理服务器
    InetSocketAddress addr = new InetSocketAddress("192.168.0.254",
    8080);
    // Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); // Socket 代理
    Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理
    // 如果我们知道代理server的名字, 可以直接使用
    // 结束
    URLConnection conn = url.openConnection(proxy);
    InputStream in = conn.getInputStream();
    // InputStream in = url.openStream();
    String s = IOUtils.toString(in);
    System.out.println(s);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    不是很详细, 有什么问题还望大家指正
    ================================
    /*
    * Output:
    *
    */
  2.  
  3. import java.io.InputStream;
    import java.net.URL;
  4.  
  5. public class MainClass {
  6.  
  7. public static void main(String args[]) {
    try {
  8.  
  9. URL url = new URL("http://www.java2s.com");
  10.  
  11. // Obtain output stream
    InputStream is = url.openStream();
  12.  
  13. // Read and display data from url
    byte buffer[] = new byte[1024];
    int i;
    while ((i = is.read(buffer)) != -1) {
    System.out.write(buffer, 0, i);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    ————————————————————————————————————————————————————————
  14.  
  15. package exp;
  16.  
  17. import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.InetSocketAddress;
    import java.net.Proxy;
    import java.net.URL;
    import java.net.URLConnection;
  18.  
  19. public class Download {
    // 生成图片函数
    public void makeImg(String imgUrl, String fileURL) {
    try {
    InetSocketAddress addr = new InetSocketAddress("proxy_ip", 7777);
    Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理
    // 如果我们知道代理server的名字, 可以直接使用
    // 结束
    URLConnection conn = new URL(imgUrl).openConnection(proxy);
    System.out.println(conn);
    BufferedInputStream in = new BufferedInputStream(conn.getInputStream());
    // 创建流
    // BufferedInputStream in = new BufferedInputStream(
    // new URL(imgUrl).openStream());
    // 生成图片名
    int index = imgUrl.lastIndexOf("/");
    String sName = imgUrl.substring(index + 1, imgUrl.length());
    System.out.println(sName);
    // 存放地址
    File img = new File(fileURL + sName);
    // 生成图片
    BufferedOutputStream out = new BufferedOutputStream(
    new FileOutputStream(img));
    byte[] buf = new byte[2048];
    int length = in.read(buf);
    while (length != -1) {
    out.write(buf, 0, length);
    length = in.read(buf);
    }
    in.close();
    out.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    public static void main(String[] args) {
    new Download().makeImg("http://i3.ku6img.com/cms/jc/201107/26/129920Hme3_1.jpg", "./");
    // new Download().makeImg("http://baidu.com", "C:\\Users\\decli\\Desktop\\");
    }
    }

java编程,通过代理服务器访问外网的FTP的更多相关文章

  1. CloseableHttpClient方式配置代理服务器访问外网

    小编最近在负责银行内部项目.其中有模块需要访问天眼查API接口,但由于公司全部内网,所以需要配置代理服务器才可以访问外网接口. 又到了激动人心的上码时刻! public void Connect(Ht ...

  2. 内网服务器通过Squid代理访问外网

    环境说明 项目整体需部署Zabbix监控并配置微信报警,而Zabbix Server并不能访问外网,故运维小哥找了台能访问外网的服务器做Suqid代理,Zabbix Server服务器通过代理服务器访 ...

  3. 6.DNS公司PC访问外网的设置 + 主DNS服务器和辅助DNS服务器的配置

    网站部署之~Windows Server | 本地部署 http://www.cnblogs.com/dunitian/p/4822808.html#iis DNS服务器部署不清楚的可以看上一篇:ht ...

  4. Ubuntu server解决不能访问外网问题

    Ubuntu server解决不能访问外网问题 在Ubuntu Server上设置访问外网时,需要设置dns,通常是将dns添加到/etc/resolv.conf文件中. 但是将dns添加至/etc/ ...

  5. Docker: 解决Docker无法在电信网络中访问外网

    在电信网络中,Docker在build和run时会无法访问外网,原因是docker的默认dns地址是8.8.8.8,由于众所周知的原因,我们需要改写这个地址,方法如下: 修改/etc/sysconfi ...

  6. 虚拟机固定IP访问外网配置

    大家都知道虚拟机网络连接有三种模式,桥接,host-only,NAT,不再赘述. 这里说一下桥接模式下,实现主机与虚拟机通讯,虚拟机与虚拟机通信,虚拟机访问外网,废话不多说,直接说解决方案: 1.本地 ...

  7. linux内网机器访问外网代理设置squid

    公司一般出于安全考虑, 在同一局域网中只有一台机器可以访问外网,运维进行了整体的限制, 但是在后面的工作中,需要在机器上安装一些软件,及命令,所以其他的机器需要访问外网来简化工作, 但又不能打乱原有运 ...

  8. neutron flat和vxlan网络访问外网流量走向

    OpenStack版本:Mitaka 物理节点: Hostname Management IP Tunnel IP Role test-ctrl-01 192.168.100.11 192.168.1 ...

  9. docker 不能访问外网

    如果之前docker能访问外网,现在不能访问, 同时宿主机可以访问外网,那就重启docker.

随机推荐

  1. dfs(迷宫)

    问题 J: 棋盘行走 时间限制: 1 Sec  内存限制: 128 MB[命题人:admin] 题目描述 小Biu在玩一个棋盘游戏,这个游戏给出一个n*m的棋盘,并且每个点上有一个棋子,棋子的颜色 用 ...

  2. P1567

    最大子数组和问题,dp或者分治.. #include <bits/stdc++.h> #define rep(i, a, b) for(int i = a; i <= b; i++) ...

  3. python练习:编写一个函数isIn,接受两个字符串作为参数,如果一个字符串是另一个字符串的一部分,返回True,否则返回False。

    python练习:编写一个函数isIn,接受两个字符串作为参数,如果一个字符串是另一个字符串的一部分,返回True,否则返回False. 重难点:定义函数的方法.使用str类型的find()函数,可以 ...

  4. 火爆微信朋友圈的Excel速成班视频课程

    Excel速成班视频课程,一共有10节课,附带课件. 目录结构如下: 目录:/2020032-Excel速成班视频 [4.6G] ┣━━课件 [1.9M] ┃ ┣━━第八课Excel实用技巧12例.x ...

  5. python写入文件中遇到 UnicodeEncodeError: ‘gbk’ codec can’t encode character 错误的解决办法

    在写入TXT文件时,某些页面总是报UnicodeEncodeError: ‘gbk’ codec can’t encode character错误,网上找了半天也没找到解决办法. 后来终于找到了解决办 ...

  6. Linux 笔记:文件名

    文件名 Linux 系统区分英文字符的大小写.比如,myfile, Myfile 和 myFILE表示的是三个不同的文件.同样,用户密码和登录名也需要区分大小写(这里沿用了Unix 和 C 语言的命名 ...

  7. ArrayList,LinkedList,vector的区别

    1,Vector.ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储. 2.List中的元素有序.允许有重复的元素,Set中的元素无序.不允许有重复元素. ...

  8. ArrayList的底层实现原理

    ArrayList源码分析 1.java.util.ArrayList<E> : List 接口的大小可变数组的实现类 ArrayList 内部基于 数组 存储 各个元素. 所谓大小可变数 ...

  9. 推荐一款好用的博客离线编辑工具——OpenLiveWriter

    1.前言 我们自己一般在写博客的时候都是在博客官网后台写的,但是如果要在多个平台发布博客的话,那就要复制好前面写好的博客,然后再去其它博客平台发布,可见非常的麻烦. 这里推荐一款好用的离线多功能,多平 ...

  10. android: 根据文件uri 获取文件名

    public static String getFileRealNameFromUri(Context context, Uri fileUri) { if (context == null || f ...