Я пытаюсь получить код ответа для разных URL.
Вот фрагмент кода -
HttpURLConnection connection = null;
String location = url;
int responseCode = 0;
int count = 1;
String redirectedUrl = null;
do{
try {
connection = pingUrl(location, true);
}
catch (Exception e){
logger.error("Caught exception : {}", e.getMessage());
logger.info("Exception while connecting to :{}", location);
if(e.getMessage().contains("unrecognized_name")) {
logger.info("Trying establishing connection by disbling SNI ....");
try {
connection = pingUrl(location, false);
}catch (Exception f){
logger.error("Caught exception with SNI disablement as well....");
if(count==1)
res.put(statusCode, "Connection failure");
else
res.put(statusCode, "Redirection , Connection failure");
break;
}
}
}
try {
responseCode = connection.getResponseCode();
} catch (IOException e) {
logger.error("Caught Exception getting response code : {}", e.getMessage());
if(count==1)
res.put(statusCode, "No Response Code");
else
res.put(statusCode, "Redirection, No Response Code");
break;
}
//res.put(statusCode, checkHttpStatus(responseCode,count));
if ((responseCode>300 && responseCode<310)) {
location = connection.getHeaderField("Location");
if(location==null) {
res.put(statusCode, "Redirection, No Location Field");
break;
}
redirectedUrl = location;
count++;
connection.disconnect();
}
else {
if(count==1)
res.put(statusCode, Integer.toString(responseCode));
else
res.put(statusCode, "Redirection, " + responseCode);
}
}while(responseCode>300 && responseCode<310);
public HttpURLConnection pingUrl(String url, boolean sniEnablement) throws Exception{
int count = 0;
HttpURLConnection conn = null;
if(!sniEnablement) {
System.setProperty("jsse.enableSNIExtension", "false");
}
conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("GET");
/**
* Setting the Browser properties
*/
//conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76 Safari/537.36");
conn.setConnectTimeout(2000);
conn.setInstanceFollowRedirects(false);
conn.setReadTimeout(10000);
conn.connect();
Thread.sleep(1000);
return conn;
}
Сначала я пытаюсь установить sh нормальное HTTP-соединение . Если я получаю исключение подтверждения SSL, я пытаюсь установить соединение sh, отключив SNI.
URL - "https://reg.mci.com/service"
Но поскольку после загрузки библиотеки SSL она не может установить sh соединение даже после отключения SNI.
Основная цель этого кода - получить коды состояния для нескольких URL-адресов. Поэтому я не могу просто отключить SNI для всех сайтов. Что здесь можно сделать, чтобы этот код работал на всех сайтах.