【问题标题】:Re-Establishing connection to Proxy Server重新建立与代理服务器的连接
【发布时间】:2016-11-29 18:51:31
【问题描述】:

我在这里有一个有趣的场景。我有一个代理服务器地址,每次我向它发出 HTTP 请求时,它都应该为我提供一个新的退出 IP。我注意到退出 IP 只有在我重新启动程序后才会改变,而不是每次循环迭代。以下是我的来源。

循环每次迭代都会调用 getHTML:

    String result = getHTML("https://wtfismyip.com/text");


public static String getHTML(String urlToRead) throws Exception {
    InetSocketAddress addy = new InetSocketAddress("example.proxy.com", 1234);
    Proxy proxy = new Proxy(Proxy.Type.HTTP, addy);
    StringBuilder result = new StringBuilder();
    URL url = new URL(urlToRead);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);
    conn.setRequestMethod("GET");
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    while ((line = rd.readLine()) != null) {
        result.append(line);
    }
    rd.close();
    conn.disconnect();
    return result.toString();
}

结果每次都将继续是相同的 IP,直到我重新启动程序。我觉得某些流或套接字尚未关闭,它使连接保持活动状态。

【问题讨论】:

    标签: java curl post proxy httpurlconnection


    【解决方案1】:

    找到了我的问题的答案。 TCP 套接字一直保持活动状态,并允许它在不重新连接的情况下继续与代理建立隧道。

    我需要在我的代码中的某处添加这个语句,我把它放在这个类初始化的开头。

        System.setProperty("http.keepAlive", "false");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多