公司要访问外网需要使用代理,突然对Java如何使用代理产生了兴趣。
方法一:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.PasswordAuthentication;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ProxyConnectionTest {
public static void main(String[] args) throws IOException {
// 设置代理 地址和密码
Proxy proxy = new Proxy(Proxy.Type.HTTP,
new InetSocketAddress(host, port));
// 设置代理的密码验证
Authenticator auth = new Authenticator() {
private PasswordAuthentication pa =
new PasswordAuthentication(username, password.toCharArray());
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return pa;
}
};
Authenticator.setDefault(auth);
// 打开连接
System.out.println("connecting...");
URL url = new URL("http://www.iteye.com/");
URLConnection conn = url.openConnection(proxy);
// 读取内容
InputStreamReader isr = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
System.out.println("done.");
}
}
然而,这里指定一些URL时总是出现这样那样的错误。比如就无法正常读取http://news.google.com,很多网站的域名后面必须加"/",如果"http://www.iteye.com/"才能取到内容,真是搞不通。
方法二:
import java.util.Properties;
import java.net.*;
import java.io.*;
public class TestHttpProxy {
public static void main(String[] args) {
String sUrl = "http://java.sun.com/index.html";
Properties prop = System.getProperties();
prop.put("http.proxyHost","192.168.1.111");
prop.put("http.proxyPort","80");
try{
URL su = new URL(sUrl);
System.out.println("url : " + su);
URLConnection uc = su.openConnection();
System.out.println("uc : " + uc);
InputStream is = su.openStream();
System.out.println("ic : " + is.read());
is.close();
System.out.println("ok");
} catch(Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Java的动态代理机制允许我们在运行时创建一个实现了指定接口的对象,这个对象的行为可以在`InvocationHandler`中自定义。当调用代理对象的任何方法时,都会转到`InvocationHandler`的`invoke`方法。这一特性使得我们...
通过上述方法,我们成功地实现了一个基于Java动态代理的数据库连接池。这种方法不仅减少了耦合度,提高了用户体验,还确保了连接的有效管理和回收。这种实现方式灵活且易于扩展,对于希望深入理解Java动态代理机制...
通过使用 JAVA 中的动态代理机制,我们可以实现一个高效、灵活的数据库连接池,解决了现有的连接池实现方法增加耦合度的问题,并且提供了一个灵活的解决方案,可以满足不同的应用需求。 在本文中,我们讨论了使用 ...
在Java中,我们可以使用`java.net.URL`类来创建一个表示URL的对象,然后使用`java.net.URLConnection`打开与该URL的连接。一旦连接建立,我们可以读取输入流并将其写入本地文件以保存图片。以下是一个简单的示例: ...
在提供的文件列表中,`runrun.bat`和`run.bat`很可能是启动代理服务器的批处理脚本,它们可能包含Java虚拟机(JVM)的命令行参数,例如指定Java应用程序的主类和jar文件的位置。而`ieproxy.jar`则是实际的Java可执行...
Java代理服务器是一种网络通信工具,它允许客户端通过它与目标服务器进行通信,以此来隐藏原始客户端的IP地址或者实现特定的网络访问策略。在Java中实现代理服务器涉及到多个关键概念和技术,包括网络编程、多线程...
通过阅读和学习这个项目的源代码,你可以更深入地理解如何在Java中结合Jsoup实现动态IP代理。 总的来说,Java爬虫结合Jsoup实现动态IP代理是一个涉及网络通信、HTML解析、数据处理和代理机制等多个方面的综合性问题...
在Java编程语言中,HTTP(超文本传输协议)连接与浏览是网络编程的重要组成部分,它允许应用程序通过HTTP协议与Web服务器进行通信。本教程将深入探讨如何使用Java实现这一功能,并提供相关的源码下载,帮助开发者更...
总的来说,这个Java代理服务器示例提供了一个基础的代理服务实现,有助于理解网络编程、HTTP协议以及Java中的多线程和网络通信机制。通过扩展这个基础代码,可以实现更复杂的代理功能,如缓存、访问控制、加密等。
通过Java.net包中的URL类,开发者可以创建并操作URL对象,从而轻松实现对网络资源的访问和操作。 1. **URL对象的创建** - `URL`类提供了多种构造方法来创建URL对象,以适应不同的URL格式。例如,可以通过字符串...
通过以上步骤,这个简单的Java代理服务器就能够实现基本的功能。在实际部署中,可能还需要添加更多高级功能,如支持HTTPS、缓存机制、错误处理、安全验证等。此外,为了提高性能和可维护性,可以考虑使用更现代的...
Java代理服务器是一种网络通信工具,它允许客户端(如浏览器)通过代理来访问其他网络资源,提供了额外的安全性、隐私保护以及可能的性能优化。在Java中实现代理服务器,主要是通过Socket编程来完成的。下面我们将...
// 创建 URL 连接并设置代理 URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy); // 发送请求 connection.setRequestMethod("GET"); ...
4. **用户使用代理连接**:用户可以像使用普通`Connection`对象一样使用代理连接,但实际的`close()`操作将被代理处理。 5. **释放连接**:当用户调用`close()`时,代理对象会将其返回给连接池,而不是真正关闭连接...
ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java ...
通过上述步骤,开发者可以构建一个系统,持续监控指定URL是否通过代理,并获取到关于代理的详细信息。在实际项目中,这样的功能可能用于网络诊断、日志记录、监控等场景。理解并熟练运用Java的网络和代理特性,对于...
### Domino Java 代理实现 FTP 上传下载 #### 知识点概述 在当前的企业级应用环境中,文件传输协议(FTP)依然是一种常见的数据交换方式。本文档主要介绍如何使用 Java 实现与 FTP 服务器的交互功能,具体包括上传...
这个例子中,`HttpURLConnection`被用来建立到指定URL的连接,然后设置请求方法为GET。`getInputStream()`方法用于读取响应内容,而`BufferedReader`则用于逐行读取输入流。最后,内容被写入名为"output.txt"的本地...
在`main`方法中,我们创建了一个`URL`对象,并通过`HttpURLConnection`打开到该URL的连接。由于之前设置了认证器和代理,所以连接能够成功通过认证并获取代理服务器后面的资源。 这段代码适用于那些需要通过有密码...
在本示例中,使用了`Jsoup.connect()`方法连接指定的URL,并通过`.post()`方法发送POST请求。此外,还可以设置代理、超时时间等参数。 **代码示例**: ```java Document doc = Jsoup.connect(url) .data("query", ...