【问题标题】:Java HTTP Request on VPN only website仅 VPN 网站上的 Java HTTP 请求
【发布时间】:2016-11-03 03:24:38
【问题描述】:

我正在尝试为我们的一个内部网站构建网站解析器(只能从公司网络访问 - 我们通过 Cisco AnyConnect VPN 进入网络)。

我可以在任何浏览器中正常访问该站点,但不能使用 HTTP 请求。 Windows 网络和共享中心显示我有两个活动网络:

  1. 实际的互联网连接
  2. 公司网络(无法访问互联网)。

默认 HTTP 客户端超时,因为我认为它使用实际的 Internet 连接发出请求(并且该网站不可供公众访问),但使用以下代码:

HttpParams params = httpClient.getParams();
params.setParameter(ConnRoutePNames.LOCAL_ADDRESS, InetAddress.getByName("10.x.x.x"));

我收到以下错误:

连接到 /10.x.x.x -> {s} -> https://zzz.com:443 时捕获 I/O 异常:网络无法访问:连接

另外,这可能是一个愚蠢的测试,但我已经向“我的 ip 是什么”站点发出了 HTTP 请求,并且 IP 显示为我的 Wifi IP,而不是通过 VPN 的 IP(当我打开浏览器并浏览时得到到“我的 ip 是什么”网站)。当我使用无 gui 浏览器(Jaunt 或 HTMLUnit)尝试此操作时,同样的事情(错误的 IP)。

请告知是否有任何解决方法。

【问题讨论】:

    标签: java apache http vpn http-get


    【解决方案1】:

    ConnRoutePNames 似乎已被弃用。看看以下是否有效(我没有测试过):

    HttpHost proxy = new HttpHost("10.x.x.x", 80);
    HttpRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
    CloseableHttpClient httpclient = HttpClients.custom()
                        .setRoutePlanner(routePlanner)
                        .build();
    

    【讨论】:

    • 谢谢,肯定有一些进展。但现在对于 https 网站的任何 httpget 请求,我都会收到 400 响应(http 网站为 200)。
    • 我找到了另一种解决方法(针对 400 代码),但您的评论解决了实际问题。谢谢
    • @breekMD 没问题。出于好奇,解决方法是什么?如果其他人有同样的问题,提及它可能会很有用。
    • 我使用了网站的 http url。使用浏览器,http 连接不起作用,只有 https 起作用。但 java GET 请求在 http 上运行良好。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多