Подтвердить что ты не робот

Использование класса java HttpsURLConnection

У меня есть небольшой фрагмент кода, который в основном имитирует HTTP-клиент, т.е. запрос POSTS и работает с RESPONSE. Пока HTTP все хорошо работает. По какой-то причине мне теперь приходится поддерживать 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

Я думаю, это немного тривиально, но я просто не понимаю, что я делаю неправильно в этом... В Googled это, и код выглядит просто - не?

любые идеи оценены!

4b9b3361

Ответ 1

Просто сохраните java.net.URLConnection или переведите его в java.net.HttpURLConnection. Оба предлагают методы для выполнения желаемой задачи как хорошего.


Боковое замечание, не связанное с технической проблемой: вы никогда не должны явно импортировать/использовать специфические классы реализации Sun Java SE в своем коде. Это недокументированные классы и могут быть изменены, что может привести к нарушению кода при обновлении JVM. С другой стороны, ваш код может также ломаться, когда вы запускаете его под другим брендом JVM.


Обновить: поскольку вы, похоже, случайно импортировали его, перейдите в список "Окно" > "Настройки" > "Ява" > "Внешний вид" > "Фильтры типов" и "Добавить" com.sun.* и sun.*. Таким образом, вы никогда не будете импортировать их случайно. Смотрите снимок экрана.

Ответ 2

Ваш протокол URL также должен быть https, а не http. Проверьте свой URL.

Ответ 3

Вышеупомянутая проблема вызвана только двумя проблемами

  • Использование неправильного импорта
  • Используя http в строке, которую вы создаете вместо этого URL, https

Ответ 4

Вместо создания объекта URL с использованием стандартного конструктора типа

URL wsURL = new URL(url);

Использование

java.net.URL wsURL = new URL(null, url,new sun.net.www.protocol.https.Handler());

которая решила бы эту проблему

Ответ 5

Проверьте свой импорт, вы должны использовать

java.net.HttpURLConnection

или

javax.net.ssl.HttpsURLConnection

Ответ 6

Проверьте значение переменной "serverAddress". Он должен https, а не http

Ответ 7

Трудно сказать, не видя весь файл, но похоже, что вы импортируете com.sun.net.ssl.HttpsURLConnection, когда вам действительно нравится javax.net.ssl.HttpsURLConnection.

Ответ 8

Изменение:

import javax.net.ssl.HttpsURLConnection;

и

URL url = new URL(serverAddress);
HttpsURLConnection httpsConn = (HttpsURLConnection) url.openConnection();

Изменить на:

import java.net.HttpURLConnection;

и

URL url = new URL(serverAddress);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();