Итак, у меня есть требование, где мне нужно получить доступ к 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
от браузера.