2016-11-29 3 views
0

ここでは面白いシナリオがあります。私はそれに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であり続けるだろう。私はいくつかのストリームやソケットがまだ閉じていないと感じ、接続を生きています。

答えて

0

私の問題に対する答えが見つかりました。 TCPソケットは生きていて、再接続せずにプロキシへのトンネリングを続けることができます。

私はこのステートメントを自分のコードのどこかに追加する必要がありました。私はこのクラスの初期化の初めに入れました。

System.setProperty("http.keepAlive", "false"); 
関連する問題