Java如何查找系统的代理设置?

在Java编程中,如何查找系统的代理设置?

以下示例显示如何使用HttpURLConnection类的systemSetting()方法和getResponse()方法的put方法在系统上查找代理设置并创建代理连接。

package com.yiibai;

import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Properties;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;

public class FindProxySettings{
   public static void main(String s[]) throws Exception {
      try {
         Properties systemSettings = System.getProperties();
         systemSettings.put("proxySet", "true");
         systemSettings.put("http.proxyHost", "proxy.yiibai.local");
         systemSettings.put("http.proxyPort", "80");

         URL u = new URL("http://www.google.com");
         HttpURLConnection con = (HttpURLConnection)u.openConnection();
         System.out.println(con.getResponseCode() + " : " + con.getResponseMessage());
         System.out.println(con.getResponseCode() == HttpURLConnection.HTTP_OK);
      } catch (Exception e) {
         e.printStackTrace();
         System.out.println(false);
      }
      System.setProperty("java.net.useSystemProxies", "true");
      Proxy proxy = (Proxy) ProxySelector.getDefault().select(new URI(
         "http://www.baidu.com/")).iterator().
      next();;
      System.out.println("proxy hostname : " + proxy.type());
      InetSocketAddress addr = (InetSocketAddress)proxy.address();

      if (addr == null) {
         System.out.println("No Proxy");
      } else {
         System.out.println("proxy hostname : " + addr.getHostName());
         System.out.println("proxy port : " + addr.getPort());
      }
   }
}

Java

上述代码示例将产生以下结果 -

200 : OK
true
proxy hostname : HTTP
proxy hostname : proxy.yiibai.local
proxy port : 80

Shell

示例-2

以下是查找系统的代理设置的另一个示例:

package com.yiibai;

import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URI;
import java.util.Iterator;
import java.util.List;

public class FindProxySettings2 {
    public static void main(String[] args) {
        try {
            System.setProperty("java.net.useSystemProxies", "true");
            List<Proxy> l = ProxySelector.getDefault().select(new URI("http://www.google.com/"));

            for (Iterator<Proxy> iter = l.iterator(); iter.hasNext();) {
                Proxy proxy = iter.next();
                System.out.println("proxy hostname : " + proxy.type());
                InetSocketAddress addr = (InetSocketAddress) proxy.address();

                if (addr == null) {
                    System.out.println("No Proxy");
                } else {
                    System.out.println("proxy hostname : " + addr.getHostName());
                    System.out.println("proxy port : " + addr.getPort());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Java

上述代码示例将产生以下结果 -

proxy hostname : DIRECT
No Proxy

原文地址:https://www.cnblogs.com/borter/p/9617178.html

时间: 2024-10-30 21:40:32

Java如何查找系统的代理设置?的相关文章

Java网络代理设置笔记

有时候使用Java需要设置代理,那么如何实现呢? 使用System.setProperty(...) http.proxyHost (default: <none>) http.proxyPort (default: 80 if http.proxyHost specified) 使用jvmargs # 在启动时指定相应的property java -Dhttp.proxyHost=your_proxy_host -Dhttp.proxyPort=proxy_port_number ... #

CentOS7 设置代理(转)--系统全局代理部分,测试可用

大多数公司的网络都使用局域网加代理上网,也就是说上外网必须使用公司指定的代理服务器,这有几个好处: 1. 首先代理可以一定程度提高浏览速度,因为可以将更多的网页缓存在代理服务器上,需要的时候直接拿就很快 2. 保障了局域网内计算机网络的安全,相当于多了一个屏障,外网能看到的只有代理服务器的ip而无法知道内网ip 3. 可以有效管控内网计算机的访问区域,适当屏蔽一些网站,相当于防火墙 但是缺点也是大大的有,作为员工这样上网就很受限制了,本文中主要讲如何在CentOS7中设置代理上网: 首先由于Ce

Linux系统作为客户端时的一些代理设置

Linux系统(此文中使用的是CentOS6.4)主机作为客户端,在一个具有网路代理的网路环境中,访问网络时有如下几个地方需做客户端代理配置: 1.图形界面下设置网络代理2.系统中的环境变量设置网络代理3.使用YUM时的代理设置4.应用程序本身的代理设置 1.图形界面下的网络代理 系统安装图形界面后,在System–> Preferences –> Network Proxy位置,即可打开网络代理的设置界面,如下图 此处的代理设置为某些GUI程序访问网络时,提供了配置,但是比如使用Firefo

JAVA常用的代理设置

由于公司上网实行代理机制, 而最近一段时间又在研究Web上的OpenApi. 没办法一定要使用代理,我之前有文章介绍了httpclient的代理使用方式, 这里介绍基本java的代理使用方式. 最常使用的全局配置代理. Java代码   Properties prop = System.getProperties(); // HTTP代理的IP设置 prop.setProperty("http.proxyHost", "10.28.0.254"); // HTTP代

java类加载器-系统类加载器

系统类加载器 系统类加载器可能都耳详能熟,但是为了完整点,还是先简单的说说系统的类加载器吧. public class Test { public static void main(String[] args) { ClassLoader cl1 = Test.class.getClassLoader().getParent().getParent(); System.out.println(cl1); ClassLoader cl2 = Test.class.getClassLoader().

Java进阶之 JDK动态代理与Cglib动态代理

一.动态代理概述: 与静态代理对照(关于静态代理的介绍 可以阅读上一篇:JAVA设计模式之 代理模式[Proxy Pattern]), 动态代理类的字节码是在程序运行时由Java反射机制动态生成. 注意: 1.AspectJ是采用编译时生成AOP代理类,具有更好的性能,但是需要使用特定的编译器进行处理 2.Spring AOP采用运行时生成AOP代理类,无需使用特定编译器进行处理,但是性能相对于AspectJ较差 二.JDK动态代理 [对有实现接口的对象做代理] 1.JDK动态代理中 需要了解的

学习Spring必学的Java基础知识(2)----动态代理

学习Spring必学的Java基础知识(2)----动态代理 引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”.以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助.): [1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081 [2] Java动态代理-->Spring AOP :http://www

OS X系统 手势终极设置方法+BetterTouchTool详细设置中文翻译

相信用过罗技G系鼠标的同学都对罗技鼠标强大的自定义功能留下过深刻的印象.对于那些表示只愿追求简单拒绝功能复杂而去使用三键鼠标的同学,我很怀疑他们是否真正了解到多键鼠标或手势功能对电脑操作便捷上带来的重大意义.复制粘贴,前进后退,关闭等等这些操作看似简单,但有的需要键盘配合,有的需要右手精确操作(随着屏幕越来越大,鼠标为点击关闭等按钮而滑行的距离越来越长),如果这些操作都能由右手在盲操作的情况下完成,那将给电脑的使用体验带来巨大的变化. 在pc上一直使用逻辑G300,完美的官方驱动软件给小小的G3

cenOS系统,chkconfig设置程序开机自启--mysql、tomcat、redis、fastdfs--nginx/fdfs_trackerd/fdfs_storaged

设置程序开机启动就是将程序的启动脚本添加到/etc/init.d目录下,或者将启动路径写入/etc/rc.d/rc.local文件里面. 设置mysql开机启动 cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql chkconfig --add mysql chkconfig mysql on 设置fdfs_tracker开机启动 cp /usr/local/src/FastDFS/init.d/fdfs_tracke