通过另一台服务器转发 Java HTTP 请求

阿比曼纽

我有两个 AWS 实例 I1 和 I2,其 IP 地址分别为 ip1 和 ip2。我想要实现的是:

  • 我想从 I1(使用 java httpclient)访问一个 url,并希望该请求应该通过 I2 实例,即到外部世界,它应该看起来是来自实例 I2 的请求。

例如 :

我正在从实例 I1 执行下面提到的代码:

class Test {

    public static void main(String[] args) {

String url = "https://api.ipify.org?format=json",
       proxy = "ip2";
       Proxy p = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxy, 80));
 URL server = new URL(url);
Properties systemProperties = System.getProperties();
HttpURLConnection connection = (HttpURLConnection)server.openConnection(p);
connection.connect();
String theString = IOUtils.toString(connection.getInputStream(), StandardCharsets.UTF_8);
 System.out.println(theString);
}
}

输出应该是实例 I2 的公共 Ip但它抛出异常:

Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
        at java.net.Socket.connect(Socket.java:589)
        at java.net.Socket.connect(Socket.java:538)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
        at sun.net.www.http.HttpClient$1.run(HttpClient.java:515)
        at sun.net.www.http.HttpClient$1.run(HttpClient.java:513)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.net.www.http.HttpClient.privilegedOpenServer(HttpClient.java:512)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:553)
        at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1199)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:162)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl$connect.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at com.exp.Test.main(Test.java:24)

我在谷歌上搜索了上述用例,但没有找到任何东西。任何帮助是appriciated。

阿比曼纽

此问题已修复。在实例 I2 上安装鱿鱼服务器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel:HTTP请求到另一台服务器

如何使用 Http 客户端(带有可选更改)将 Symfony 请求转发到另一台服务器?

如何从 Spring Boot 控制器向另一台服务器执行 http 请求

将任何 Nodejs 请求转发到另一台服务器

节点转发路径请求到另一台服务器

PHP。将请求原样转发到另一台服务器

IP / PORT将请求转发到另一台服务器

WebPart是否使用Suave将请求转发到另一台服务器?

嵌套请求循环内的请求到另一台服务器

由另一台服务器请求时,字体的AEM CORS问题

如何通过传入的http呼叫传递到dart中的另一台服务器?

在路由未找到的轨道上对另一台服务器的HTTP调用

转发服务器 HTTP 流量以通过 SSH 隧道在另一台设备中处理

如何在NodeJS中将多部分请求从一台服务器传递到另一台服务器?

SOAP请求在一台服务器上随机失败,但在iOS7上的另一台服务器上工作

Java proxyservlet 将数据发布到另一台服务器

一台服务器上是否存在Java SSLHandshakeException,而另一台服务器上没有?

如何使用虚拟目录指定将请求重定向到另一台服务器?

使用 ZnClient 发布请求登录到服务器后,如何将文件发送到 pharo 中的另一台服务器?

angular-cli服务器-如何将API请求代理到另一台服务器?

将来自Azure node.js Web应用程序的请求发布到另一台服务器。请求的问题:连接EACCES错误

转到rpc,http或websockets,这是最快地将许多小数据重复地从一台服务器传输到另一台服务器的方法

如何在表单中使用自定义方法来发送请求并接受来自Django中另一台服务器的响应?

1and1将请求限制为使用ASP.NET CORE的另一台服务器

使用 htaccess、重定向 http 或 https 域以及任何子页面到另一台服务器上的特定页面

java中调用在另一台服务器上运行的C函数的最佳方法是什么?

将所有传入的HTTP请求转发到基于子域的两台服务器之一?

对本地 apache 服务器的 Java http 请求 - UnknownHostException

通过Java脚本监听Http服务器端请求(文档类型)事件