Java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl не может быть добавлено в javax.net.ssl.HttpsURLConnection - программирование
Подтвердить что ты не робот

Java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl не может быть добавлено в javax.net.ssl.HttpsURLConnection

Я пишу немного кода для загрузки файла с устройства в облако через HTTPS.

Соответствующий фрагмент:

HttpsURLConnection conn = null; 
URL url = new URL(urlstring);
conn = (HttpsURLConnection) url.openConnection(); // exception here.

Но приведение не будет компилироваться:

06-20 15:58:05.311: E/FNF(30286): java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection

Я нашел этот похожий вопрос: Использование java-класса HttpsURLConnection, но я не импортирую ничего из пакета sun.

Мой импорт:

import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import android.net.Uri;
import javax.net.ssl.HttpsURLConnection;
import android.util.Log;
import edu.mit.media.funf.storage.RemoteFileArchive;
import edu.mit.media.funf.util.LogUtil;

Я уже немного почесываю голову об этом, любые предложения?

4b9b3361

Ответ 1

Метод 1: Ваш urlString должен начинаться с https://, а не с http://, чтобы вы могли привести его к HttpsURLConnection.

Способ 2: если ваша строка urlString начинается с http://, изменение HttpsURLConnection на HttpURLConnection должно работать

Ответ 2

У меня было то же исключение java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection

uri = new URL("http://www.google.com");
HttpsURLConnection connection = (HttpsURLConnection) uri.openConnection(); // Exception

я изменился

uri = new URL("http://www.google.com");

в

uri = new URL("https://www.google.com");

Теперь это работает отлично.

Ответ 3

url.openConnection(); похоже, возвращает объект типа libcore.net.http.HttpURLConnectionImpl, в то время как вы объявили свой объект "conn" как тип import javax.net.ssl.HttpsURLConnection;. Вам нужно отсортировать импорт и использованные объекты. Возможно, вы пропустили что-то в учебном пособии, в котором вы следовали.

Ответ 4

Просто удалите urlConnection.setDoOutput(true);

он будет работать нормально.