Java接入代理IP发送网络请求的几种方法作者:数据无忧 时间:2022-12-08 15:19:51 |
一、使用全局设置Java 公开了一组系统属性,可用于配置 JVM 范围内的行为。如果适用于用例,这种“一刀切”的方法通常最容易实施。我们可以在调用 JVM 时从命令行设置所需的属性。作为替代方案,我们也可以通过在运行时调用 System.setProperty()来设置它们。 1.1. 可用的系统属性Java 为 HTTP、HTTPS、FTP 和 SOCKS 协议提供代理处理程序。可以为每个处理程序定义代理作为主机名和端口号:
如果指定 nonProxyHosts,主机模式可以以通配符(“*”)开头或结尾。可能需要转义“|” Windows 平台上的分隔符。可以在 Oracle 关于网络属性的官方 Java 文档中找到所有可用的代理相关系统属性的详尽列表。 1.2. 通过命令行参数设置我们可以通过将设置作为系统属性传递来在命令行上定义代理:当以这种方式启动一个进程时,我们可以简单地在URL上使用openConnection()而无需任何额外的工作: 1.3. 使用System.setProperty(String, String)设置如果我们无法在命令行上设置代理属性,我们可以在我们的程序中调用System.setProperty()来设置它们:如果我们稍后手动取消设置相关的系统属性,那么将不再使用代理: 1.4. 全局配置的限制尽管使用具有系统属性的全局配置很容易实现,但这种方法限制了我们可以做的事情,因为这些设置适用于整个 JVM。出于这个原因,为特定协议定义的设置在 JVM 的生命周期内是有效的,或者直到它们被取消设置。要绕过此限制,可能很想根据需要打开和关闭设置。为了在多线程程序中安全地执行此操作,有必要引入措施来防止并发问题。 作为替代方案,Proxy API 提供了对代理配置的更精细控制。 二. 使用 代理APIProxy类为我们提供了一种在每个连接的基础上配置代理的灵活方法。如果存在任何现有的 JVM 范围的代理设置,使用Proxy类的基于连接的代理设置将覆盖它们。我们可以通过Proxy.Type定义三种类型的代理:
2.1. 使用 HTTP 代理要使用 HTTP 代理,我们首先使用Proxy 和 Proxy.Type.HTTP类型包装一个SocketAddress实例。接下来,我们只需将Proxy实例传递给URLConnection.openConnection():简而言之,这意味着我们将连接到 URL_STRING,然后通过托管在 127.0.0.1:3128的代理服务器路由该连接。 2.2. 使用直接代理我们可能需要直接连接到主机。在这种情况下,我们可以使用静态Proxy.NO_PROXY实例显式绕过可能在全局配置的代理 。在幕后,API 为我们构造了一个新的Proxy实例,使用Proxy.Type.DIRECT作为类型:基本上,如果没有全局配置的代理,那么这 与不带参数调用openConnection() 是一样的。 2.3. 使用 SOCKS 代理使用URLConnection时,使用 SOCKS 代理类似于 HTTP 变体。 我们首先使用Proxy.Type.SOCKS类型用Proxy包装SocketAddress实例。之后,我们将Proxy实例传递给 URLConnection.openConnection:连接到 TCP 套接字时也可以使用 SOCKS 代理。首先,我们使用Proxy实例构造一个Socket。之后,我们将目标SocketAddress实例传递给Socket.connect(): 三.结论在本文中,我们研究了如何在核心 Java 中使用代理IP服务器。首先,我们研究了使用系统属性通过代理服务器进行连接的更旧的、更全局的连接方式。然后,我们看到了如何使用Proxy类,它在通过代理服务器连接时提供细粒度的控制。
福利:现在通过开发者购买代理IP,购买后联系客服最高可获
返现20%
到你的支付宝(最低35元,最高1440元)
无忧代理IP(www.data5u.com)原创文章,转载请注明出处。
|