У меня есть маленькая часть кода, который в основном impements Клиент HTTP, т.е. она ОТПРАВЛЯЕТ запрос и работает с ОТВЕТОМ ре. Пока HTTP является concenerned, все работает хорошо. По некоторым причинам я теперь должен поддерживать HTTPS также. Таким образом, вот кратко, что я делаю для открытия соединения:
URL url = new URL(serverAddress);
HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();
Это перестало работать, указывая:
sun.net.www.protocol.https.HttpsURLConnectionImpl cannot be cast to com.sun.net.ssl.HttpsURLConnection
Я предполагаю, что это довольно тривиально, но я просто не получаю то, что я делаю неправильно в этом... Погугленный это, и код просто выглядит правильным - нет?
любые идеи ценятся!
Просто сохраните его java.net.URLConnection
или вместо этого преобразуйте его в java.net.HttpURLConnection
. Оба предлагают методы для выполнения желаемой задачи на хорошем уровне.
Дополнительное замечание, не связанное с технической проблемой: вы не должны никогда явно импортировать / использовать классы, специфичные для реализации Sun Java SE, в вашем коде.Это недокументированные классы, в которые могут вноситься изменения, которые могут привести к нарушению работы кода при обновлении JVM. С другой стороны, ваш код также может сломаться, если вы запустите его на JVM другого производителя.
Обновление : поскольку вы, кажется, случайно импортировали его, перейдите в Окно> Настройки> Java> Внешний вид> Фильтры типов и Добавьте com.sun. *
] и вс. *
в список. Таким образом, вы никогда не импортируете их случайно:
Проверьте свой импорт, вы должны использовать
java.net.HttpURLConnection
или
javax.net.ssl.HttpsURLConnection
Трудно сказать, не видя весь файл, но похоже, что вы импортируете com.sun.net.ssl.HttpsURLConnection, когда вам действительно нужен javax.net.ssl.HttpsURLConnection.