分享java中设置代理的两种方式
作者:天魂地煞 发布时间:2023-10-28 10:48:52
标签:java,设置代理
1 前言
有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http、https、ftp、socks代理。比如在IE浏览器设置代理。
那我们在我们的java程序中使用代理呢,有如下两种方式。直接上代码.
2 采用设置系统属性
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.util.Properties;
public class ProxyDemo1 {
public static void main(String[] args) {
Properties prop = System.getProperties();
// 设置http访问要使用的代理服务器的地址
prop.setProperty("http.proxyHost", "183.45.78.31");
// 设置http访问要使用的代理服务器的端口
prop.setProperty("http.proxyPort", "8080");
// 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔
prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");
// 设置安全访问使用的代理服务器地址与端口
// 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问
prop.setProperty("https.proxyHost", "183.45.78.31");
prop.setProperty("https.proxyPort", "443");
// 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机
prop.setProperty("ftp.proxyHost", "183.45.78.31");
prop.setProperty("ftp.proxyPort", "21");
prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");
// socks代理服务器的地址与端口
prop.setProperty("socksProxyHost", "183.45.78.31");
prop.setProperty("socksProxyPort", "1080");
// 设置登陆到代理服务器的用户名和密码
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() {
return new PasswordAuthentication(user, password.toCharArray());
}
}
}
3 使用Proxy
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
public class ProxyDemo2 {
public static void main(String[] args) throws Exception {
URL url = new URL("http://www.3lai8.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 代理
Authenticator.setDefault(new MyAuthenticator("username", "password"));// 设置代理的用户和密码
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);// 设置代理访问
InputStreamReader in = new InputStreamReader(connection.getInputStream());
BufferedReader reader = new BufferedReader(in);
while (true) {
String s = reader.readLine();
if (s != null) {
System.out.println(s);
}
}
}
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() {
return new PasswordAuthentication(user, password.toCharArray());
}
}
}
4 总结
OK,就这么的简单,搞定,用第一种方式是一种全局的代理,用第种方式可以针对具体的哪一个使用代理。知道了这些我们就可以做我们想做的事情了哦!


猜你喜欢
- 前言消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构,是大型分
- 本篇我们讲解下使用spring创建bean的几种方式,创建bean,也可以叫组件注册,就是把单例bean放到spring容器中。我们定义如下
- selectById方法根据id,查询记录public void updateRecycleAssayBusinessItemCharge(
- 说实话,关于Android中对短信的一些相关操作是一个比较入门的东西。那我现在还要来写这一篇博客的原因只是因为现在开发中有相关内容,而又想将
- 附加依赖项属性是一个属性本来不属于对象自己,但是某些特定场景其他的对象要使用该对象在这种场景下的值。这个值只在这个场景下使用。基于这个需求设
- 1、 如何给节点添加图片? 首先需要添加一个图片控件,然后给它加入图片,最后把TreeList的节点图片属性和图片控件绑定,代码如下:Ima
- 一. 异常的定义在《Java编程思想》中这样定义 异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决
- 实例如下所示:/** * 创建多级目录文件 * * @param path 文件路径 * @throws IOException */pri
- springboot项目出现”java: 错误: 无效的源发行版:17“问题解决方案下面是报错页面问
- 1 概念和原理一般的字符串匹配算法都是匹配一个子串,例如KMP、Trie,那么如果同时匹配多个子串呢?此时就需要用到AC自动机了。AC自动机
- /// <summary>/// 固定长度的随机字符串/// </summary>/// <param nam
- 一、Maven简介1. 什么是MavenMaven:是Apache提供的免费开源的项目管理工具。它提供了一个项目对象模型(pom.xml)、
- 创建SpringBoot项目可以通过两种方式1、通过访问:https://start.spring.io/,SpringBoot的官方网站进
- IntelliJ IDEA安装好以后,按说我们就要双击进行启动了,但在启动之前,我得给大家说一下IntelliJ IDEA安装以后的安装目录
- IntelliJ IDEA是很多程序员必备且在业界被公认为最好的Java开发工具,有很多小伙伴在安装完IDEA并且tomcat之后,启动to
- 本文实例讲述了C#编程实现QQ界面的方法。分享给大家供大家参考,具体如下:步骤:1.新建一个页面,假如说叫VerticalMenu2.把ht
- C#都没人用了吗,网上想找个现成的雪花分形代码,都没找见,有C++,有python,有java的,就没有C#的,自己试试写一个吧。publi
- 一:item的根布局设置Android:clickable="true",之后导致item点击事件失效,对根
- 前言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯
- 前言CompletableFuture实现了CompletionStage接口和Future接口,前者是对后者的一个扩展,增加了异步回调、流