example - httpurlconnection java ejemplo
java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl no se puede convertir a javax.net.ssl.HttpsURLConnection (4)
Simplemente elimine urlConnection.setDoOutput(true);
funcionará bien
Estoy escribiendo un poco de código para cargar un archivo desde el dispositivo a la nube a través de HTTPS.
Fragmento relevante:
HttpsURLConnection conn = null;
URL url = new URL(urlstring);
conn = (HttpsURLConnection) url.openConnection(); // exception here.
Pero el elenco no compilará:
06-20 15:58:05.311: E/FNF(30286): java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl cannot be cast to javax.net.ssl.HttpsURLConnection
Encontré esta pregunta similar: usando la clase jtt HttpsURLConnection , pero no estoy importando nada del paquete sun.
Mis importaciones:
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;
He estado rascándome la cabeza sobre esto por un tiempo, ¿alguna sugerencia?
Su urlString
debe comenzar con https://
y no http://
para que pueda HttpsURLConnection
a una HttpsURLConnection
.
Tuve la misma excepción 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
Cambié
uri = new URL("http://www.google.com");
a
uri = new URL("https://www.google.com");
Ahora está funcionando perfectamente.
url.openConnection();
parece estar devolviendo un objeto de tipo libcore.net.http.HttpURLConnectionImpl
mientras que ha declarado que su objeto "conn" es de tipo import javax.net.ssl.HttpsURLConnection;
. Necesitas ordenar tus importaciones y objetos usados. Tal vez te perdiste algo en el tutorial que estabas siguiendo.