2016-11-29 3 views
0

У меня здесь интересный сценарий. У меня есть адрес прокси-сервера, который должен предоставлять мне новый IP-адрес при каждом обращении к HTTP-запросу. Я заметил, что IP-адрес выхода изменится только после перезапуска программы, в отличие от каждой итерации цикла. Ниже мой источник.Повторное установление соединения с прокси-сервером

Loop вызывает 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"); 
Смежные вопросы