SocketException при использовании предпочитаемого IPv6 адреса - PullRequest
0 голосов
/ 06 ноября 2019

Итак, у меня есть требование, где мне нужно получить доступ к URL, но я предпочитаю IPV6, если оно доступно.

Это часть кода, которую я имею.

private HttpURLConnection getConnection(URL url) throws IOException {
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.setDoOutput(true);
    conn.setConnectTimeout(15 * 1000);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("User-Agent", "Mozilla/4.76");
    conn.setUseCaches(false);
    return conn;
}

И яя читаю вывод соединения через Buffered Reader.

HttpURLConnection conn = getConnection(new URL(API + urlParameters));
return new BufferedReader(new InputStreamReader(conn.getInputStream())).readLine();

Проблема возникает в BufferedReader, выдавая ошибку

net.SocketException: Network is unreachable: connect

Но когда я удаляю этот кодзаблокировать из моего приложения, программа работает как задумано. System.setProperty("java.net.preferIPv6Addresses", "true");

Но, конечно, он отправляет IPv4 IP-адрес, даже если пользователь может использовать IPv6 Как я могу сделать так, чтобы он отправлял IPv6 IP, если пользователь не может использовать IPv6 Это 'Я буду использовать IPv4, я использую cloudflare для регистрации IP и по умолчанию cloudflare требует IPv6 от браузера.

...