And*_*eaG 5 java networking http
我有一种 Http-Gateway 应用程序,它充当本地网络外部服务器的 http 客户端。
将进行网络配置升级,并且我将遇到问题,因为:
- 客户端计算机上有多个网卡
- 防火墙/nat 规则使用硬连线 IP 地址
如果我可以通过编程强制 HttpUrlConnection 对象使用特定的 IP 地址,那就没问题了。但恐怕做不到。
我对吗?如果不支持,哪个版本的 JRE 支持?
其他可能的解决方案,最好是不涉及从头开始重写所有内容的解决方案?
越简单越好:我知道,有 Apache HttpClient,或者我可以使用 Sockets...
谢谢
你不能。HttpURLConnection 不提供任何操作套接字的接口。
你也不应该这样做。接口的选择基于路由决策。如果您必须手动选择网卡才能到达目的地,那么您的所有互联网连接都会遇到同样的问题。您应该在操作系统中添加静态路由,以确保目的地使用正确的接口。
我看不出有什么好的解决方案,但有两种可能:
本地代理连接:
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(
"proxy", 5555));
URLConnection urlConnection = url.openConnection(proxy);
Run Code Online (Sandbox Code Playgroud)URLStreamHandlerFactory使用注册自定义java.net.URL。每当openConnection()调用它时,URL它都会由这个注册的自定义工厂处理,使您可以控制套接字连接的详细信息。是使用 Apache 的实现还是自己开发?
Url.setURLStreamHandlerFactory(URLStreamHandlerFactory fac)
Run Code Online (Sandbox Code Playgroud)