Java 不使用代理直接连接到Internet
不使用代理就可以直接连接到Internet吗 假设我的组织有一个代理,我使用Java Proxy类中给出的DIRECT选项Java 不使用代理直接连接到Internet,java,networking,proxy,Java,Networking,Proxy,不使用代理就可以直接连接到Internet吗 假设我的组织有一个代理,我使用Java Proxy类中给出的DIRECT选项 SocketAddress addr = new InetSocketAddress("webcache.mydomain.com", 8080); Proxy proxy = new Proxy(Proxy.Type.DIRECT, addr); 如果你按照它所说的文档去做 DIRECT,表示直接连接或没有代理。 这正是它的行为方式。当我使用此选项时,我不必提供任何代理
SocketAddress addr = new
InetSocketAddress("webcache.mydomain.com", 8080);
Proxy proxy = new Proxy(Proxy.Type.DIRECT, addr);
如果你按照它所说的文档去做
DIRECT,表示直接连接或没有代理。
这正是它的行为方式。当我使用此选项时,我不必提供任何代理详细信息,我可以从Internet访问内容
我有三个问题
Proxy proxy = new Proxy(Proxy.Type.DIRECT, addr);
不是创建直接(无代理)代理指令的正确方法。你应该这样做
Proxy proxy = Proxy.NO_PROXY
Socket类和HttpURLConnection的内部实现检查是否proxy==proxy.NO_proxy
(注意:“==”,而不是“equals()!)
它不会检查是否
proxy.getType()==proxy.Type.DIRECT
如果您的组织有代理,则并非所有网络流量都通过代理。您仍然可以继续并建立到Internet的直接连接。大多数情况下,组织会阻止直接连接,并迫使您使用代理。有时,它们可能允许您使用受限的直接连接,允许某些URL,而拒绝其他URL。问题1和3更适合Serverfault。总之,这个问题的某些部分可能适合Server fault,但我也有兴趣了解Java API是如何工作的。服务器出现故障时,该部分将永远不会得到响应。我请你不要提这个问题。谢谢。这是社区的决定。但三分之二是大多数问题;)感谢您的更正,但是DIRECT类型如何忽略组织代理并与外部世界建立直接联系呢。为什么浏览器无法执行此操作。新代理(Proxy.Type.DIRECT)不是直接代理(无代理)。这可能是Java开发人员的错误或疏忽,但事实就是如此。使用Proxy.NO_Proxy试试你的代码,看看会发生什么。