2012-06-20 3 views
14

J'écris un peu de code pour télécharger un fichier de l'appareil vers le cloud via HTTPS.java.lang.ClassCastException: libcore.net.http.HttpURLConnectionImpl ne peut pas être converti en javax.net.ssl.HttpsURLConnection

extrait pertinent:

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

Mais le casting ne compilera pas:

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

Je trouve cette question similaire: Using java class HttpsURLConnection, mais je ne suis pas rien importé du paquet soleil.

Mes importations:

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; 

J'ai été me gratter la tête sur celui-ci pendant un certain temps maintenant, des suggestions?

+0

C'est un 'HttpURLConnection', vous ne pouvez pas le convertir en' HttpsURLConnection'. C'est la même chose que la question que vous avez liée. Vous utilisez juste une autre classe incorrecte –

Répondre

63

Votre urlString doit commencer par https:// et non http:// pour vous d'être en mesure de le jeter à un HttpsURLConnection.

+1

comme un commentaire, si votre urlString commence par http: //, en changeant HttpsURLConnection pour HttpURLConnection résolu l'erreur :) –

+0

@ MatiasElorriaga- votre commentaire est plus utile de la réponse ... merci. – offset

+0

J'ai utilisé java.net.HttpURLConnection pour les URL non déblayées mais Google n'accepterait pas l'implémentation de HttpURLConnection lors de la publication d'une application sur le Play Store. Message d'alerte par Play Store - "Vos applications utilisent une implémentation non sécurisée de l'interface HostnameVerifier." Veuillez fournir une solution? –

0

url.openConnection(); semble renvoyer un objet de type libcore.net.http.HttpURLConnectionImpl alors que vous avez déclaré votre objet "conn" comme étant de type import javax.net.ssl.HttpsURLConnection;. Vous devez trier vos importations et vos objets usagés. Peut-être avez-vous manqué quelque chose dans le tutoriel que vous suiviez.

0

supprimer Simple urlConnection.setDoOutput(true);

cela fonctionnera très bien.

Questions connexes