2012-06-20 52 views
14

Estoy escribiendo un poco de código para cargar un archivo desde el dispositivo a la nube a través de HTTPS.java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl no se puede convertir a javax.net.ssl.HttpsURLConnection

fragmento relevante:

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

Pero el reparto no se 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 

Me encontraron esta pregunta similar: Using java class HttpsURLConnection, pero no me importa nada del paquete de sol.

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 rascando la cabeza sobre esto desde hace un tiempo, alguna sugerencia?

+0

Es un 'HttpURLConnection', no se puede convertir en' HttpsURLConnection'. Esto es lo mismo que la pregunta que vinculó. Simplemente usas otra clase incorrecta –

Respuesta

63

Su urlString debe comenzar con https:// y no http:// para que usted sea capaz de convertirlo a HttpsURLConnection.

+1

como comentario, si tu urlString comienza con http: //, cambiando HttpsURLConnection por HttpURLConnection resolvió el error :) –

+0

@ MatiasElorriaga- tu comentario es más útil por la respuesta ... gracias. – offset

+0

He usado java.net.HttpURLConnection para URL sin corregir, pero Google no aceptó la implementación de HttpURLConnection durante la publicación de la aplicación en Play Store. Mensaje de alerta de Play Store: "Sus aplicaciones están utilizando una implementación insegura de la interfaz HostnameVerifier". ¿Desea proporcionar alguna solución? –

0

url.openConnection(); parece devolver un objeto del tipo libcore.net.http.HttpURLConnectionImpl mientras ha declarado que su objeto "conn" es del tipo import javax.net.ssl.HttpsURLConnection;. Debe ordenar sus importaciones y objetos usados. Tal vez te perdiste algo en el tutorial que estabas siguiendo.

0

de eliminación simple urlConnection.setDoOutput(true);

que va a funcionar bien.

Cuestiones relacionadas