2012-06-20 4 views
14

Sto scrivendo un po 'di codice per caricare un file dal dispositivo al cloud su HTTPS.java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl non può essere lanciato su javax.net.ssl.HttpsURLConnection

frammento di Rilevante:

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

Ma il cast non verrà compilato:

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

Ho trovato questa domanda simile: Using java class HttpsURLConnection, ma io non sono importare nulla dal pacchetto sole.

miei importazioni:

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; 

Sono stato graffiare la mia testa su questo per un po 'di tempo, qualche suggerimento?

+0

È un 'HttpURLConnection', non è possibile eseguire il cast su' HttpsURLConnection'. Questa è la stessa della domanda che hai collegato. Stai semplicemente usando un'altra classe errata –

risposta

63

tuo urlString devono iniziare con https:// e non http:// per voi di essere in grado di lanciare a un HttpsURLConnection.

+1

come commento, se urlString inizia con http: //, la modifica di HttpsURLConnection per HttpURLConnection ha risolto l'errore :) –

+0

@ MatiasElorriaga- il tuo commento è più utile dalla risposta ... grazie. – offset

+0

Ho usato java.net.HttpURLConnection per URL non protetti, ma Google non ha accettato l'implementazione HttpURLConnection durante l'applicazione di pubblicazione su Play Store. Messaggio di avviso per Play Store - "Le tue app stanno utilizzando un'implementazione non sicura dell'interfaccia HostnameVerifier." Fornisci una soluzione? –

0

url.openConnection(); sembra restituire un oggetto di tipo libcore.net.http.HttpURLConnectionImpl mentre si dichiara l'oggetto "conn" come di tipo import javax.net.ssl.HttpsURLConnection;. È necessario ordinare le importazioni e gli oggetti usati. Forse ti sei perso qualcosa nel tutorial che stavi seguendo.

0

semplice remove urlConnection.setDoOutput(true);

che funzionerà bene.